5

如果其中一项验证为假,我如何确保表单不会提交?

$('#form').submit(function(){
    validateForm1();
    validateForm(document.forms['dpart2']);
    validateForm(document.forms['dpart3']);                     
}); 
4

5 回答 5

7
$('#form').submit(function(){
    return (validateForm1() &&
            validateForm(document.forms['dpart2']) &&
            validateForm(document.forms['dpart3']))
});

基本上,您在事件处理函数中返回 false。

于 2009-03-20T09:34:56.103 回答
6

如果函数返回 false,则不会提交表单。

$('#form').submit(function(){
    return  validateForm1() 
            && validateForm(document.forms['dpart2']) 
            && validateForm(document.forms['dpart3']);                                         
              }
});
于 2009-03-20T09:34:03.373 回答
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;

});

这样,您的所有验证器都将被调用,但任何失败的布尔值都会导致失败。

于 2009-03-20T21:43:39.627 回答
3

如果 validateForm(...) 和 validateForm1() 返回一个布尔值(true 表示没有发生验证错误),那么您尝试这样做:

$('#form').submit(function(){
    if (!validateForm1() || !validateForm(document.forms['dpart2']) || !validateForm(document.forms['dpart3'])) {
        return false;
    }
});
于 2009-03-20T09:33:45.760 回答
3

一个自动出现的想法:即使您实施了彻底的客户端验证,也要准备好在服务器上接收您可以想象的任何无效请求数据。

客户端验证永远不会让您远离服务器端验证。这只是可用性的一个奖励。

于 2009-03-20T12:33:00.497 回答