Функция проверки jQuery .valid () не работает - PullRequest
0 голосов
/ 01 мая 2019

Если я сделаю это:

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

1 Ответ

4 голосов
/ 01 мая 2019

По умолчанию он игнорирует скрытые элементы, поскольку значение по умолчанию ignore параметр равен ":hidden", поэтому обновите параметр ignore .

$('#testForm').validate({
  // updated to ignore class selector to ignore only elements with class .ignore
  ignore: ".ignore"
  rules: {
    testInput: {
      required: true,
    }
  },
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...