jQuery 验证 .valid() 函数不起作用

jQuery Validate .valid() function doesn't work

如果我这样做:

$('#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>

默认情况下,它会忽略隐藏元素,因为默认值为 ignore option is ":hidden" so update the ignore option

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