如果其中一项验证错误,我如何确保表单不会提交?
$('#form').submit(function(){
validateForm1();
validateForm(document.forms['dpart2']);
validateForm(document.forms['dpart3']);
});
答案 0 :(得分:7)
$('#form').submit(function(){
return (validateForm1() &&
validateForm(document.forms['dpart2']) &&
validateForm(document.forms['dpart3']))
});
基本上,您在事件处理函数中返回false。
答案 1 :(得分:6)
如果函数返回false,则不会提交表单。
$('#form').submit(function(){
return validateForm1()
&& validateForm(document.forms['dpart2'])
&& validateForm(document.forms['dpart3']);
}
});
答案 2 :(得分:4)
好的,其他一些解决方案会有一个懒惰的失败...您可能希望运行所有验证,以便显示所有错误。假设您的验证方法如果失败则返回false。
$("#myform").submit(function() {
var ret = true;
ret = validateForm1() && ret;
ret = validateForm(document.forms['dpart2']) && ret
ret = validateForm(document.forms['dpart3'])) && ret
return ret;
});
这样就可以调用所有验证器,但是任何失败的布尔值都会导致失败。
答案 3 :(得分:3)
如果validateForm(...)和validateForm1()返回一个布尔值(true表示没有发生验证错误),那么你试着这样做:
$('#form').submit(function(){
if (!validateForm1() || !validateForm(document.forms['dpart2']) || !validateForm(document.forms['dpart3'])) {
return false;
}
});
答案 4 :(得分:3)
自动出现的想法:即使您实施了彻底的客户端验证,也要准备好在服务器上接收您可能想象的任何无效请求数据。
客户端验证永远不会阻止您进行服务器端验证。这只是可用性的一个奖励。