submit方法与onsubmit事件
文章目录
- 一.form的submit方法是否会触发onsubmit事件?
- 二. 如何阻止表单的提交
- 1.dom0方式绑定
- 2.用dom2方式绑定(addEventListener)
- 三.如何用代码触发onsumbit
- 1.dom0方式绑定(参见二.1)
- 2.dom2方式绑定(参见二.2)
一.form的submit方法是否会触发onsubmit事件?
测试代码如下:
<html><head><meta content="text/html; charset=gb2312" http-equiv="Content-Type"></head><form id='myform' target="_top" action="http://www.soso.com/q"><input type="text" name="w" value="ball"/><input type="submit" value="搜索" /></form><script>var obj = document.getElementById('myform');obj.onsubmit = function(){alert('check');return true;}obj.submit();</script>
</hmtl>
结果是,我们不会看到’check’的弹出框,所以结论是:
submit()方法不会触发onsubmit事件。
二. 如何阻止表单的提交
经常我们的提交表单前都会用js对表单内容作验证,如果有问题,则不希望提单表单。那么,如果阻止表单提交呢?
取决于你用什么方式给表单加入onsubmit事件。
1.dom0方式绑定
<script>var obj = document.getElementById('myform');var check = function(){if ('error'){//验证出错的情况just a demoreturn false;}else{return true;}}obj.onsubmit = function(){return check();}
</script>
用这种方式绑定onsubmit事件,表单能否提交取决于onsubmit函数的返回值。false时,表单不会提交。
2.用dom2方式绑定(addEventListener)
看下面这段代码:
<script>var obj = document.getElementById('myform');var check = function(){if ('error') {//验证出错的情况just a demoreturn false;}else {return true;}}function addListener(element, type, handler){if (!element) {return;}if (element.addEventListener) {element.addEventListener(type, handler, false);}else {//for ieelement.attachEvent("on" + type, handler);}}addListener(obj, 'submit', check);
</script>
你会发现,IE下,可以正常阻止表单提单,但FF及chrome下表单正常提交了…
原因:
ECMAScript Language Binding写明:
addEventListener(type, listener, useCapture)
The listener parameter is a EventListener object.
Object EventListener:This is an ECMAScript function reference. This method has no return value. The parameter is a Event object.
可见,listener是没有返回值的(写了也不会认),因此我们的check函数的返回值是不起作用的。
解决方式:
<script>
function check(ev) {if ('error') {//验证出错的情况just a demoev = ev || window.event; // Event对象if (ev.preventDefault) { // 标准浏览器ev.preventDefault();} else { // IE浏览器window.event.returnValue = false;}}
}
</script>
三.如何用代码触发onsumbit
这也取决于你用何种方式绑定onsubmit事件
1.dom0方式绑定(参见二.1)
这时直接调用onsumit方法即可,根据onsubmit()的返回值决定是否触发submit。
<script>
if (obj.onsubmit() != false){obj.submit();
}
</script>
2.dom2方式绑定(参见二.2)
<script>
if (obj.fireEvent) {//for ieif (obj.fireEvent('onsubmit')){obj.submit();}
}
else if (document.createEvent){var ev = document.createEvent('HTMLEvents');ev.initEvent('submit', false, true);obj.dispatchEvent(ev);
}
</script>
submit方法与onsubmit事件相关推荐
- js submit方法与onsubmit事件
一.form的submit方法是否会触发onsubmit事件? 测试代码如下: <html> <head> <meta content="text/html; ...
- php onsubmit方法,表单元素的submit()方法和onsubmit事件应用概述
表单元素拥有submit方法,同时也具有onsubmit事件句柄,用于监听表单提交.可以使用elemForm.submit();方法触发表单提交. 1.表单元素中出现了name="submi ...
- 表单元素的submit()方法和onsubmit事件
表单元素拥有submit方法,同时也具有onsubmit事件句柄,用于监听表单提交.可以使用elemForm.submit();方法触发表单提交. 1.表单元素中出现了name="submi ...
- 表单的提交onsubmit事件
看代码 留个记录: <script>function func(){alert('false');return false;} </script> <div>< ...
- form.submit 方法 并不会触发 form.onsubmit 事件
做表单的时候发现一个奇怪的地方,总结下: form.submit 方法 并不会触发 form.onsubmit 事件,看代码: <body><div class="cont ...
- form的submit()方法不能触发onsubmit事件的解决方法,兼容各版本浏览器。
form的submit()方法不能触发onsubmit事件的解决方法,兼容各版本浏览器. 参考文章: (1)form的submit()方法不能触发onsubmit事件的解决方法,兼容各版本浏览器. ( ...
- 前端:JS/32/form对象(表单)(form对象的属性,方法和事件),受返回值影响的两个事件(onclick事件,onsubmit事件),获取表单的元素对象的三种方式,表单的提交和验证方法总结
form 对象(表单) 一个<form>标记,就是一个<form>对象: 1,form对象的属性 name :表单的名称,主要用来让JS来控制表单: action :表单的数据 ...
- form表单中onclick事件和onsubmit事件的执行顺序
说来很惭愧,今天因为form表单的一个小问题困扰了一下午.虽然最终得以解决,但花费的时间实在是令人汗颜,现在总结一下遇到的问题. 先说一下背景,之前帮一个朋友的项目写了一个原生js的表单验证,今天突然 ...
- 【onsubmit】Form表单onsubmit事件用法详解
表单提交数据时,我们有时会用到onsubmit事件,那么onsubmit事件到底是干什么用的,在什么时候触发onsubmit事件以及如何使用onsubmit.本文章将向大家详细讲解onsubmit事件 ...
最新文章
- 数据库跟尾过多的错误,能够的原因阐发及处置惩罚设备
- ML之LGBMRegressor(Competition):2018年全国大学生计算机技能应用大赛《住房月租金预测大数据赛》——设计思路以及核心代码—191017再次更新
- 操作系统原理 : 非连续的内存分配,分段,页表
- CentOS新增用户并授予sudo权限
- jQuery验证表单插件——jquery-validation
- 有家创业公司花重金要请我当CTO?!
- 李国庆深夜发“15条真相”回应:关于原生家庭、同性恋、1.3亿...
- 【C11】complex
- perl模块net mysql_Perl模块实例化DBI Forks“Mysql服务器已经消失”
- 程序员面试金典——7.2碰撞的蚂蚁
- 拉格朗日插值与拉格朗日反演
- 网络唤醒Wake On Lan
- RS232串口的直连串口线和交叉串口线的区别
- ERROR: Command errored out with exit status 1
- Chloe Orm的使用(一)
- python离线环境迁移_Python离线项目迁移部署
- 【性能测试】Loadrunner12.55(二)-飞机订票系统-脚本录制
- 爱奇艺连续三年独家直播中网赛事 打造高端体育赛事生态矩阵
- 如何去开发一个webApp
- 安卓 View 开发 绘制尺子
热门文章
- 京东跟便利店搞一起了谁爽?谁不爽?
- Linux: 创建加密虚拟磁盘 cryptsetup
- aul软件oracle,AUL/MyDUL修复Oracle
- hexo同时在github和gitcafe搭建个人博客
- JS函数声明和预解析的理解
- matlab如何进对图像进行透视变换,如何根据已知的内在和外在参数在Matlab中进行透视校正?...
- docker离线包安装
- PostgreSQL index include - 类聚簇表与应用(append only, IoT时空轨迹, 离散多行扫描与返回)
- C语言因式分解的程序框图,C语言 · 因式分解
- Swing ButtonGroup