Почему проверка JQuery не работает надежно? - PullRequest
6 голосов
/ 06 апреля 2011

Иногда появляется ненавязчивая проверка, иногда нет.

Ненавязчивая проверка работает надежно, только когда я явно вызываю функцию valid () формы (выполняется во время отправки)

Почему это так?

Код:

<script src="jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="jquery.validate.min.js" type="text/javascript"></script>
<script src="jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
<form action="/User/Input" id="fxUser634377199694370000" method="post">    
  <fieldset>
    <legend>Person</legend>
    <div class="editor-label">
      <label for="Firstname">Firstname</label>
    </div>
    <div class="editor-field">
      <input class="text-box single-line" data-val="true" data-val-required="The Firstname field is required." id="Firstname" name="Firstname" type="text" value="" />
      <span class="field-validation-valid" data-valmsg-for="Firstname" data-valmsg-replace="true"></span>
    </div>
    <div class="editor-label">
      <label for="Lastneim">Lastneim</label>
    </div>
    <div class="editor-field">
      <input class="text-box single-line" data-val="true" data-val-required="The Lastneim field is required." id="Lastneim" name="Lastneim" type="text" value="" />
      <span class="field-validation-valid" data-valmsg-for="Lastneim" data-valmsg-replace="true"></span>
    </div>
    <div class="editor-label">
      <label for="Age">Age</label>
    </div>
    <div class="editor-field">
      <input class="text-box single-line" data-val="true" data-val-number="The field Age must be a number." data-val-required="The Age field is required." id="Age" name="Age" type="text" value="" />
      <span class="field-validation-valid" data-valmsg-for="Age" data-valmsg-replace="true"></span>
    </div>
    <p>
      <input type="submit" id='fxUser634377199694370000_Saver' value="Save" />
    </p>
  </fieldset>
</form>

<script type="text/javascript">
  $(function () {
    $('#fxUser634377199694370000_Saver').click(function (e) {
      e.preventDefault();
      if ($('#fxUser634377199694370000').valid())
        ;
      else {
        alert('not ok');
        return;
      }
      alert($('#fxUser634377199694370000').serialize());
    });
  });
</script>

Функциональный код, без кода сервера, только html и на стороне клиента (библиотеки jquery): http://www.sendspace.com/file/913i1w

Ответы [ 3 ]

5 голосов
/ 06 апреля 2011

В документах говорится: «До того, как поле будет помечено как недействительное, проверка ленива: перед тем, как отправлять форму в первый раз, пользователь может просматривать поля, не получая раздражающих сообщений - он выиграл» я не получу ошибки до того, как у него появится возможность ввести правильное значение ".

Это то, что вас беспокоит?

1 голос
/ 06 мая 2014

Обычно я был бы удовлетворен ленивой проверкой, но в очень специфическом приложении это не так. Вдохновленный @Peeter, я звоню на проверку, как:

$("#wep_key_register_test_second").focus(function() {
    $("#wep_key_register_test_second").valid();
});

и последующее включение плагина в нормальное состояние.

0 голосов
/ 15 апреля 2011

Как говорится в документах, проверка ленива до первого вызова valid ().

Обходной путь для этого - вызвать метод valid () самостоятельно: http://jsfiddle.net/peeter/e6et6/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...