执行from1.onsubmit() 为什么没有调用用jquery绑定的事件?但是可以执行js原生绑定的事件!求解!
jquery绑定
$("#form1").submit(function(){
alert("submit")
return false;
}
);
原生绑定
document.getElementById('form1').onsubmit = function() {
alert(1);
return false;
}
1、提交按钮的name不能和type一样,
2、表单的id可有可无,当页面中只有一个form时,jquery绑定也可以写
$('form').submit(function(){});
直接执行from1.onsubmit() 为什么不能调用jquery绑定的方法呢?
但是from1.onsubmit() 可以执行用原生方法绑定的方法,这是为何?
@juetian: form1.onsubmit事件优先于jquery事件绑定,会忽略jqury的绑定
@智伟: 可是用submit 按钮可以同时触发jquery和js原生绑定的事件。就是直接调用form1.onsubmit时候不执行jquery的绑定。有什么办法,让form1.onsubmit执行jquery的绑定吗?谢谢!
1.可能是加载$("#form1").submit()时,form1还没有加载,事件没有绑定上,改用$("#form1").live('submit',function(){});试试;
2.可能是执行到$("#form1")报错了.
已排除上述问题
@juetian: 不是楼上说的事件绑定的问题?那是什么原因?你解决了吗?
我一般都是用$("#form1").on('submit',function(){});
@米粒儿。: 暂时没解决~
没有引用jquery?
不是
既然已经引用了jquery,为什么不直接用$("form").submit()调用呢?
看看游览器开发者工具中的控制台是不是有什么JS的报错。
晕,楼主弄错了,执行form1.onsubmit()这个函数并没有提交表单,也没有触发任何事件,只是单纯的执行一个函数而已。所以楼主应该提交表单才行,也就是执行form1.submit()就可以了。当然我是建议你这样写$("#form1").submit(),保持一致性。
不是,你没理解我的意思~不是提交要提交,而是提交前触发的事件onsubmit。你可以按照我贴出来的代码看看,是否这样~目前没好的解决方法好像
@juetian:
<!DOCTYPE HTML> <html lang="en"> <head> <meta charset="UTF-8"> <title>DEMO TEST</title> <style type="text/css"> </style> <script type="text/javascript" src="jquery-1.11.0.js"></script> <script type="text/javascript"> function sub() { alert("处理表单"); return false; } $(function() { // document.getElementById("subBtn").onclick = sub; // document.getElementById("form1").onsubmit = sub; $("#form1").submit(function() { alert("submit"); return false; }); document.getElementById("form1").onsubmit = function() { alert(1); return false; }; //form1.onsubmit(); //只是执行onsubmit函数,没有提交表单,这个地方和执行其它正常的函数没有任何区别 //form1.submit(); //提交表单,不触发onsubmit事件,所以两个函数都不执行 //document.getElementById("form1").submit(); //同上 $("#form1").submit(); //提交表单,并且触发onsubmit事件,两个函数都执行,由于函数返回值为false,终止了表单的提交 }); </script> </head> <body> <form id="form1" action="#" method="get"> <label>姓名:</label> <input type="text" name="name" /> <label>姓名:</label> <input type="text" name="name" /> <input type="submit" name="提交" id="subBtn" /> <input type="reset" name="重置" /> </form> </body> </html>
趁着中午有空,做了一下实验,我上面大致说的还是正确的,不过也有一个问题,那就是直接写form1.submit()居然不能触发onsubmit事件,网上说是W3C规定,也就是这一点和blur()方法与onblur事件,focus()方法与onflcus事件,click()方法与onclick事件 是不一致的。
但是jquery已经对这一点进行了修改,也就是说$("#form1").submit()可以触发onsubmit事件
再次重申一下吧:楼主执行form1.onsubmit(),只是在执行一个普通的函数而已,而不是在提交表单,更不会触发onsubmit事件