表单未通过jQuery验证提交

时间:2011-10-27 14:09:09

标签: javascript jquery forms asp.net-mvc-3 jquery-validate

在我的.net / MVC项目中使用jQuery验证插件时遇到了一些问题: 验证通常都可以正常运行,问题出现在提交时: 我想要在没有任何验证错误的情况下提交表单,为此我设置了debug:true;

但是当提交按钮变得无响应时将其设置为true后,即使一切正常,即没有验证错误,单击提交按钮时也不会发生任何事情。如果删除debug:true,即使存在验证错误,也会提交表单。 我想解决这个问题,中途,即: 如果有错误则单击提交时,它不会提交表单并显示错误 如果没有错误,那么只需简单提交即可。

帮助PLZ ..谢谢!

    <script type="text/javascript">
      $(document).ready(function() {
$("#productSubmit").validate( {
  debug : true, rules : {
     prdctttle : {
        maxlength : 50, 
        required : true, 
        onlyChars : true }
     , prdctdscrptn : {
        maxlength : 250, 
        required : true, 
        onlyChars : true }
    }
  , messages : {
     }
  }
); 
}
); 
$.validator.addMethod('onlyChars', function (value) {
return /^[a-zA-Z ,-!]+$/.test(value); }, 'Please enter a valid name with only alphabets');
   $("#productSubmit").validate( {
  submitHandler : function(form) {
     if ($(form).valid()) form.submit(); return false; // prevent normal form posting
     }
  }
);
</script>

2 个答案:

答案 0 :(得分:11)

在提交前更改最后一行以检查表单是否有效:

$("#productSubmit").validate({ 
    submitHandler: function(form) {  
                           if ($(form).valid()) 
                               form.submit(); 
                           return false; // prevent normal form posting
                    }
 });

编辑:我忘了添加“return false;”用于停止正常提交表单的行(因此只有在验证通过时才会发生)。

答案 1 :(得分:2)

GregL的答案大部分是正确的。

最终让我正常工作的原因还在于:

onsubmit: false

最终代码:

$("#productSubmit").validate({ 
 onsubmit: false,
 submitHandler: function(form) {  
   if ($(form).valid())
   {
       form.submit(); 
   }
   return false; // prevent normal form posting
 }
});

这会覆盖默认的提交行为,并在submitHandler中处理最终的验证检查和提交。