我想拦截网页上的特定表单的所有表单提交。它看起来非常简单,jQuery:form.submit(function(e) {…})
,如果点击提交按钮,它的效果非常好。如何拦截表单可靠地提交?
但是也有一个选择字段,不this.form.submit()
的OnChange属性和它看起来像这样的呼叫绕过我的听众(在铬/火狐):
<script type="text/javascript">
function submitForm(e) {
window.alert('submitted');
e.preventDefault();
return false;
}
$(document).ready(function() {
$('#bar').submit(submitForm);
});
</script>
<form id="bar">
<select name="name" onChange="this.form.submit()">
<option>Foo</option>
<option>Bar</option>
</select>
<br/>
<input type="submit"/>
</form>
显然,在上面的代码,我可以只改变this.form.submit()
作为我提交监听器的具体参考。然而,在我的真实应用程序中并不那么简单,所以我正在寻找不需要修改onChange属性的方式。
如果我没有做一个愚蠢的错误,但其实这是预期的浏览器行为,我会很高兴,如果你能解释事件流,为什么这会导致上述症状。
哦,忘了提,“$(‘#条’)。提交()”,为的onChange部分工程,以及。 JS是否对onX属性执行某种“早期绑定”? – 2010-10-18 09:03:47