首页 新闻 会员 周边 捐助

执行from1.onsubmit() 为什么没有调用用jquery绑定的事件?

0
悬赏园豆:5 [已解决问题] 解决于 2014-06-12 10:59

执行from1.onsubmit() 为什么没有调用用jquery绑定的事件?但是可以执行js原生绑定的事件!求解!

 

jquery绑定

$("#form1").submit(function(){
alert("submit")
return false;
}
);

 

原生绑定

document.getElementById('form1').onsubmit = function() {
alert(1);
return false;
}

juetian的主页 juetian | 初学一级 | 园豆:197
提问于:2014-06-08 15:27
< >
分享
最佳答案
1

1、提交按钮的name不能和type一样,

2、表单的id可有可无,当页面中只有一个form时,jquery绑定也可以写

$('form').submit(function(){});

收获园豆:4
智伟 | 菜鸟二级 |园豆:266 | 2014-06-08 15:33

直接执行from1.onsubmit() 为什么不能调用jquery绑定的方法呢?

juetian | 园豆:197 (初学一级) | 2014-06-08 15:35

但是from1.onsubmit() 可以执行用原生方法绑定的方法,这是为何?

juetian | 园豆:197 (初学一级) | 2014-06-08 15:36

@juetian: form1.onsubmit事件优先于jquery事件绑定,会忽略jqury的绑定

智伟 | 园豆:266 (菜鸟二级) | 2014-06-08 15:38

@智伟: 可是用submit 按钮可以同时触发jquery和js原生绑定的事件。就是直接调用form1.onsubmit时候不执行jquery的绑定。有什么办法,让form1.onsubmit执行jquery的绑定吗?谢谢!

juetian | 园豆:197 (初学一级) | 2014-06-08 15:40
其他回答(5)
0

1.可能是加载$("#form1").submit()时,form1还没有加载,事件没有绑定上,改用$("#form1").live('submit',function(){});试试;

2.可能是执行到$("#form1")报错了.

收获园豆:1
xiaoafei1991 | 园豆:466 (菜鸟二级) | 2014-06-08 17:57

已排除上述问题

支持(0) 反对(0) juetian | 园豆:197 (初学一级) | 2014-06-08 18:45

@juetian: 不是楼上说的事件绑定的问题?那是什么原因?你解决了吗?

我一般都是用$("#form1").on('submit',function(){});

支持(0) 反对(0) I-Can | 园豆:121 (初学一级) | 2014-06-09 10:01

@米粒儿。: 暂时没解决~

支持(0) 反对(0) juetian | 园豆:197 (初学一级) | 2014-06-12 10:58
0

没有引用jquery?

刘宏玺 | 园豆:14020 (专家六级) | 2014-06-08 18:43

不是

支持(0) 反对(0) juetian | 园豆:197 (初学一级) | 2014-06-08 18:45
0

既然已经引用了jquery,为什么不直接用$("form").submit()调用呢?

I,Robot | 园豆:9783 (大侠五级) | 2014-06-08 23:38
0

看看游览器开发者工具中的控制台是不是有什么JS的报错。

chenping2008 | 园豆:9836 (大侠五级) | 2014-06-09 11:23
0

晕,楼主弄错了,执行form1.onsubmit()这个函数并没有提交表单,也没有触发任何事件,只是单纯的执行一个函数而已。所以楼主应该提交表单才行,也就是执行form1.submit()就可以了。当然我是建议你这样写$("#form1").submit(),保持一致性。

ThreeTree | 园豆:1490 (小虾三级) | 2014-06-10 23:40

不是,你没理解我的意思~不是提交要提交,而是提交前触发的事件onsubmit。你可以按照我贴出来的代码看看,是否这样~目前没好的解决方法好像

支持(0) 反对(0) juetian | 园豆:197 (初学一级) | 2014-06-12 10:26

@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>
View Code

趁着中午有空,做了一下实验,我上面大致说的还是正确的,不过也有一个问题,那就是直接写form1.submit()居然不能触发onsubmit事件,网上说是W3C规定,也就是这一点和blur()方法与onblur事件,focus()方法与onflcus事件,click()方法与onclick事件 是不一致的。

但是jquery已经对这一点进行了修改,也就是说$("#form1").submit()可以触发onsubmit事件

再次重申一下吧:楼主执行form1.onsubmit(),只是在执行一个普通的函数而已,而不是在提交表单,更不会触发onsubmit事件

支持(0) 反对(0) ThreeTree | 园豆:1490 (小虾三级) | 2014-06-12 12:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册