【问题标题】:jquery validation stops page submit when non required field is empty当非必填字段为空时,jquery 验证停止页面提交
【发布时间】:2010-05-13 19:06:30
【问题描述】:

我正在使用 jquery 来验证 asp.net 表单(母版页中的内容)。必填字段验证效果很好,但我有一个不需要的字段,但如果它确实有文本,那么它需要采用正确的格式。 Jquery 可以很好地验证不正确的文本,但是当文本为空时,它会阻止表单提交(尽管没有错误消息)。任何人都知道为什么会发生这种情况或该怎么做?

 // Add validation rule for email
            if ($("input[id$='TextBoxEmail']").length) {
                $("input[id$='TextBoxEmail']").rules('add', {
                    required: false,
                    email: true,
                    messages: {
                        email: 'Please enter a valid email.'
                    }
                }); 
            } 

【问题讨论】:

    标签: asp.net jquery validation


    【解决方案1】:

    我刚刚设置了一个类似的测试,无法复制该问题(参见下面的代码):

        <script type="text/javascript">
        $(document).ready(function () {
            $("#test").validate();
    
            if ($("input[id$='txtText']").length) {
                $("input[id$='txtText']").rules('add', {
                    required: false,
                    email: true,
                    messages: {
                        email: 'Please enter a valid email.'
                    }
                });
            }
        });
    </script>
    
    <form id="test">
        <input type="text" id="txtText" />
        <input type="submit" />
    </form>
    

    我正在使用 jQuery 1.5.1 和最新的 jquery.validate.min.js

    我只能建议您使 jQuery 选择器更加具体,因为 id$='TextBoxEmail' 表示以“TextBoxEmail”结尾。如果您有冲突的字段名称,这可能是个问题?

    【讨论】:

      【解决方案2】:

      我们发现解决此问题的方法是根据我们的标准手动删除验证。

      // Add validation rule for first name (default Person type is Individual so the validation is needed as default)
                  if ($("input[id$='TextBoxFirstName']").length) {
                      $("input[id$='TextBoxFirstName']").rules('add', {
                          required: true,
                          messages: {
                              required: 'First Name is required for individuals.'
                          }
                      });
                  }   
      
      // Add event for checking if first name validation is needed
                  $('select[id$=DropDownListPersonType]').change(function () {
                      if ($('select[id$=DropDownListPersonType] option:selected').text() == 'Individual') {
                          // Add validation rule
                          $("input[id$='TextBoxFirstName']").rules('add', {
                              required: true,
                              messages: {
                                  email: 'First Name is required for individuals.'
                              }
                          });
                      }
                      else {
                          // remove rule
                          $("input[id$='TextBoxFirstName']").rules("remove");
                      }
                  });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-28
        • 1970-01-01
        • 2012-05-23
        • 2019-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-13
        相关资源
        最近更新 更多