我正在尝试捕获所有表单提交事件,从action属性获取url并使用它使用AJAX将表单内容发送到该地址。所以我需要的只是一个提交事件处理程序。但是我很快就陷入了麻烦,因为它似乎无法在IE中运行。
$(document).submit(function(e) {
alert('clicked');
e.preventDefault();
});
这是我用于跨浏览器测试目的的代码。它适用于Chrome,Firefox,但不适用于IE。我不允许在文档上设置事件监听器吗?
答案 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();
});