Очистка jQuery Диалог подтверждения при открытии - PullRequest
0 голосов
/ 29 апреля 2020

Я сталкиваюсь с похожим поведением в моем коде: https://codepen.io/iw3/pen/BAdIq

html

<input id="open" type="button" value="Open" />
<div id="dialog">
  <form id="form">
    <input type="text" name="field" />
  </form>
</div>

JS

$(function () {
  $('#dialog').dialog({
    autoOpen: false,
    buttons: {
      'Send': function() {
        if ($('#form').valid()) {
          alert('Success');
          $('#dialog').dialog('close');
        }
      }
    }
  });
  $('#open').on('click', function() {
    $('#dialog').dialog('open');
  });
  $('#form').validate({
    rules: {
      field: {
        required: true,
        digits: true,
        maxlength: 9,
        min: 1
      }
    }
  });
});

Когда пользователь вводит данные в форму и получает сообщение об ошибке, затем закрывает форму и снова открывает ее, сообщения проверки в красном остаются, пока они действительно должны быть удалены. Это предполагаемое поведение или есть способ сбросить валидацию?

1 Ответ

1 голос
/ 29 апреля 2020

Чтобы исправить это, вы можете просто скрыть элементы ошибки label при закрытии диалога:

$('#dialog').dialog({
  autoOpen: false,
  close: function() {
    $('label.error').hide();
  },
  // other configuration settings...
});

В качестве альтернативы вы можете сохранить ссылку на validator и вызвать resetForm() на нем когда диалог закрыт:

let validator = $('#form').validate({
  rules: {
    // your rules...
  }
});

$('#dialog').dialog({
  autoOpen: false,
  close: function() {
    validator.resetForm();
  },
  // other configuration settings...
});
...