我想,以防止onclick事件提交按钮提交来自:
$j('form#userForm .button').click(function(e) {
if ($j("#zip_field").val() > 1000){
$j('form#userForm .button').attr('onclick','').unbind('click');
alert('Sorry we leveren alleen inomstreken hijen!');
e.preventDefault();
return false;
}
});
这是提交按钮:
<button class="button vm-button-correct" type="submit"
onclick="javascript:return myValidator(userForm, 'savecartuser');">Opslaan</button>
它会显示“警告”功能,并且还删除onclick事件,但形式是无论如何提交。 提交将解决这个问题之前,手动删除onclick事件。 然而,这是核心功能,我不希望删除它。
编辑:
这肯定通过的onclick选择造成的。我怎么能强迫我的jQuery脚本立即重新加载onclick事件? 添加jQuery代码之前: $j('form#userForm .button').attr('onclick','');
将解决问题。但是我的验证将无法正常工作的了...
你需要将事件添加作为参数:
$j('form#userForm .button').click(function(event) { // <- goes here !
if ( parseInt($j("#zip_field").val(), 10) > 1000){
event.preventDefault();
$j('form#userForm .button').attr('onclick','').unbind('click');
alert('Sorry we leveren alleen inomstreken hijen!');
}
});
此外, val()
总是返回一个字符串,所以一个好的做法是将其转换为一个数字,你把它比作一个数字之前,我不知道,如果你真的针对所有.button
内的元素#userForm
内功能,或者您应该使用this
呢?
如果你正在使用jQuery 1.7+,你真的应该考虑使用on()
和off()
这一点。
基本上,如果你从改变你的按钮类型type="submit"
到type="button"
,这样的按钮将不会提交表单,并且不需要解决方法。
希望这可以帮助。
不要忘了,还有功能/事件参数,但必须指定的参数:
$("#thing").click(function(e) {
e.preventDefault();
});
通过这种方式,提交停止,所以你可以conditionalise它。
最好的办法就是尽一切里面你提交表单的事件处理程序。 的onclick删除内联并运行它提交函数内
$j('#userForm').submit(function(e) {
if (+$j("#zip_field").val() > 1000){
alert('Sorry we leveren alleen inomstreken hijen!');
return false;
}
return myValidator(userForm, 'savecartuser');
});
我相信,有一个简单的方法:
$j('form#userForm .button').click(function(event) { // <- goes here !
if ( parseInt($j("#zip_field").val(), 10) > 1000){
event.stopPropagation();
}
});