$('#delete').click(function (e) {
e.preventDefault();
var result = true;
if($('.checkbox:checked').length < 1) {
$.notifyBar({
cls: "error",
html: 'At least 1 checkbox must be checked.',
delay: 5000
});
result = false;
}
return result;
});
问题是如果一切顺利,按钮不会提交表格 有什么不对吗?
答案 0 :(得分:2)
对e.preventDefault()
的调用阻止了提交表单的按钮的默认操作。当您不希望提交时,您只需要调用它。
$('#delete').click( function(e) {
if($('.checkbox:checked').length<1){
$.notifyBar({
cls: "error",
html: 'At least 1 checkbox must be checked.',
delay: 5000
});
// Invalid, stop the submit
e.preventDefault();
}
})
答案 1 :(得分:1)
我认为这就是你要做的事情:
$('#delete').click(function (e) {
var result = true;
if($('.checkbox:checked').length < 1) {
$.notifyBar({
cls: "error",
html: 'At least 1 checkbox must be checked.',
delay: 5000
});
result = false;
}
if(!result) e.preventDefault();
});
对e.preventDefault();
的调用将阻止提交按钮提交,无论您从函数返回什么。在我的编辑中,只有在结果为false时才会阻止默认操作。
答案 2 :(得分:0)
即使返回e.preventDefault();
,使用true
也会停止提交表单。
答案 3 :(得分:0)
您应该将它放在onsubmit处理程序而不是单击处理程序中。另外,确保您希望它们单击的按钮的类型为submit:
function doSubmit()
{
var result = true;
if($('.checkbox:checked').length < 1) {
$.notifyBar({
cls: "error",
html: 'At least 1 checkbox must be checked.',
delay: 5000
});
result = false;
}
return result;
}
<form onsubmit="return doSubmit()">
Checkboxes....
<input type="submit" value="submit" />
</form>