JQuery:提交不起作用

时间:2012-06-23 20:39:43

标签: jquery

我正在尝试捕获所有表单提交事件,从action属性获取url并使用它使用AJAX将表单内容发送到该地址。所以我需要的只是一个提交事件处理程序。但是我很快就陷入了麻烦,因为它似乎无法在IE中运行。

$(document).submit(function(e) {
        alert('clicked');
        e.preventDefault();
    });  

这是我用于跨浏览器测试目的的代码。它适用于Chrome,Firefox,但不适用于IE。我不允许在文档上设置事件监听器吗?

3 个答案:

答案 0 :(得分:22)

查看jQuery API:

  

JavaScript提交事件在Internet Explorer中不会出现气泡。但是,依赖于事件委托和提交事件的脚本将从jQuery 1.4开始在浏览器中一致地工作,jQuery 1.4已对事件的行为进行了规范化。 (api.jquery.com/submit

submit事件在Internet Explorer中不会出现气泡,因此document元素永远不会被通知submit个事件。 jQuery将为您规范化,但仅限于您使用事件委派。这并不难做到,事实上如果有更复杂的话,可能会使你的代码变得更好:

$(document).on('submit', 'form', function(e) {
    alert('clicked');
    e.preventDefault();
});

这保留了绑定到document的优点(例如,捕获不存在的元素上的事件),同时使其在IE中成为可能。请注意,事件处理程序中的this现在是form元素,而不是document

答案 1 :(得分:3)

将监听器附加到表单

$("form").submit(function(e) {
        alert('clicked');
        e.preventDefault();
}); 

答案 2 :(得分:3)

怎么样:

$("form").submit(function(e) {
    alert('clicked');
    e.preventDefault();
});