10

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

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

这是我用于跨浏览器测试目的的代码。它可以在 Chrome、Firefox 中完美运行,但在 IE 中却不行。我不允许在文档上设置事件侦听器吗?

4

3 回答 3

25

看看 jQuery API:

JavaScript 提交事件不会在 Internet Explorer 中冒泡。但是,从 jQuery 1.4 开始,依赖事件委托和 submit 事件的脚本将在浏览器中一致地工作,这已经规范了事件的行为。( 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.

于 2012-06-23T20:46:05.000 回答
3

将侦听器附加到您的表单

$("form").submit(function(e) {
        alert('clicked');
        e.preventDefault();
}); 
于 2012-06-23T20:42:08.793 回答
3

关于什么:

$("form").submit(function(e) {
    alert('clicked');
    e.preventDefault();
});
于 2012-06-23T20:42:16.933 回答