我正在使用IE9。
jQuery.fn.jquery说1.8.2
。
代码I用于绑定表单提交:
$("#formName")[0].submit(function foo () {
alert( "Handler for .submit() called." );
});
每次执行此代码而不是绑定时,我的formName
表单都会提交。如何绑定而不是提交?
答案 0 :(得分:4)
使用preventDefault可以解决问题(如@Jason P所述)
$("#formName").on("submit", function(event)
{
console.log("Handler for .submit() called.");
event.preventDefault(); // Prevent the event from processing the submit request.
console.log("Default submit event prevented from occurring.");
});
注意:
.on()
可确保您的侦听器会注意到DOM树中的更改。[0]
不是必需的(如@Robert Rozas所述),只需知道id就足够了。 event.preventDefault
部分。console.log()
进行临时日志记录,使用您真棒的开发人员工具:)答案 1 :(得分:3)
@ Jonast92的优秀答案可以帮助您绑定处理程序到您的表单的submit
事件。我只是想到指出一个案例,你可能真的需要你的代码中的[0]
。
我们假设您已阻止表单提交,并且您已确定数据足够好并且是时候提交表单了。您可以使用 ajax 或默认表单提交来提交表单:
//ajax form submission
$.ajax( this.action,
{data: $(this).serialize(), ...
........
});
//or default form submission
this.submit();
//or $(this)[0].submit();
//or $("#formName")[0].submit();
要记住的要点
$('.form').submit()
触发.form
的{{1}}事件。这将导致绑定到此事件的任何处理程序触发。除非其中一位处理程序有submit
或.form
,否则这也会导致return false
格式提交。
event.preventDefault()
或 $('.form').on('submit', handler)
将处理程序$('.form').submit( handler )
绑定到handler
' s提交活动。
.form
导致表单通过默认表单提交提交。请注意,这不会触发$('.form')[0].submit()
的提交事件,因此无法通过.form
或return false
阻止。