【问题标题】:jQuery Validate .valid() function doesn't workjQuery Validate .valid() 函数不起作用
【发布时间】:2019-05-01 17:12:27
【问题描述】:

如果我这样做:

$('#form').validate({
    // ....
})

然后我隐藏表单#form

$('#form').hide() .

然后我检查$('#form').valid(),即使表单应该无效,我总是得到true

示例:当表单显示时单击checkTestValid,文本字段中没有任何内容(它会提示false),然后使用clickHide 隐藏表单,然后使用checkTestValid 再次检查(它会提示true):

$('#testForm').validate({
  rules: {
    testInput: {
      required: true,
    }
  },
});

$(".btnTest").click(function() {
  $("#tab2").hide();
})
$(".btnTest2").click(function() {
  $("#tab2").show();
})
$(".clickTestVelid").click(function() {
  alert($("#testForm").valid())
})
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/additional-methods.js"></script>

<div id="tab1">
  <button class="btnTest">clickHide</button>
  <button class="btnTest2">clickShow</button>
</div>
<div id="tab2">
  <form id="testForm">
    <input required value="" name="testInput">
  </form>
</div>

<button class="clickTestVelid">clickTestValid</button>

【问题讨论】:

    标签: jquery jquery-validate


    【解决方案1】:

    默认情况下,它会忽略隐藏元素,因为ignore option 的默认值为":hidden",因此请更新ignore option

    $('#testForm').validate({
      // updated to ignore class selector to ignore only elements with class .ignore
      ignore: ".ignore"
      rules: {
        testInput: {
          required: true,
        }
      },
    });
    

    【讨论】:

    • 我认为它必须是这样的。 :-)
    • @forseti420:很高兴它有帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 2013-06-18
    相关资源
    最近更新 更多