【问题标题】:Form not getting submitted with jQuery validation表单未通过 jQuery 验证提交
【发布时间】:2011-10-27 14:09:09
【问题描述】:

在我的 .net/MVC 项目中使用 jQuery 验证插件时遇到了一个小问题: 验证通常工作正常,问题出现在提交时: 我希望表单中存在任何验证错误时不提交,为此我设置了 debug:true;

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

请帮忙..谢谢!

    <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>

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 我用您的代码更改了列表行,但现在整个验证脚本已停止工作.. 当我单击提交而不输入 netng 时,它的 jst 刷新以及在正确填写所有信息后提交时。浏览器给出"This web page is not available" 错误
    • @Maven 该死,我有一种可能发生的感觉。试试我更新的代码。
    • @DGregL ,仍然面临一些奇怪的行为,现在如果我尝试提交一个空表单,它会给出“此字段是必需的”的良好验证错误,但在我填写表单并尝试提交提交按钮之后变得像以前一样没有反应。加上它没有像以前一样重新检查其值的更改验证..:s
    • 我已经更新了我帖子中的代码.. 以防现在有一些语法错误..
    【解决方案2】:

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

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

    onsubmit: false
    

    最终代码:

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

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

    【讨论】:

      猜你喜欢
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多