htmlsubmit提交事件,submit⽅法与onsubmit事件⼀.form的submit⽅法是否会触发onsubmit事件?
测试代码如下:
var obj = ElementById('myform');
alert('check');
return true;
}
obj.submit();
结果是,我们不会看到'check'的弹出框,所以结论是:
submit()⽅法不会触发onsubmit事件。
⼆.如何阻⽌表单的提交
经常我们的提交表单前都会⽤js对表单内容作验证,如果有问题,则不希望提单表单。那么,如果阻⽌表单提交呢?
取决于你⽤什么⽅式给表单加⼊onsubmit事件。
1.dom0⽅式绑定
var obj = ElementById('myform');
var check = function(){
if ('error'){//验证出错的情况just a demo
return false;
}else{
return true;
}
}
return check();
}
⽤这种⽅式绑定onsubmit事件,表单能否提交取决于onsubmit函数的返回值。false时,表单不会提交。
2.⽤dom2⽅式绑定(addEventListener)
看下⾯这段代码:
var obj = ElementById('myform');
var check = function(){
if ('error') {//验证出错的情况just a demo
return false;
}
else {
return true;
}
}
function addListener(element, type, handler){
if (!element) {
return;
}
if (element.addEventListener) {
element.addEventListener(type, handler, false);html中提交表单用什么属性
}
else {//for ie
element.attachEvent("on" + type, handler);
}
}
addListener(obj, 'submit', check);
你会发现,IE下,可以正常阻⽌表单提单,但FF及chrome下表单正常提交了...
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函数的返回值是不起作⽤的。
解决⽅式:
function check(ev) {
if ('error') {//验证出错的情况just a demo
ev = ev || window.event; // Event对象
if (ev.preventDefault) { // 标准浏览器
ev.preventDefault();
} else { // IE浏览器
urnValue = false;
}
}
}
三.如何⽤代码触发onsumbit
这也取决于你⽤何种⽅式绑定onsubmit事件
1.dom0⽅式绑定(参见⼆.1)
这时直接调⽤onsumit⽅法即可,根据onsubmit()的返回值决定是否触发submit。if (submit() != false){
obj.submit();
}
2.dom2⽅式绑定(参见⼆.2)
if (obj.fireEvent) {//for ie
if (obj.fireEvent('onsubmit')){
obj.submit();
}
}
else if (ateEvent){
var ev = ateEvent('HTMLEvents');
ev.initEvent('submit', false, true);
obj.dispatchEvent(ev);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论