jquery validate: focusCleanup: true и focusInvalid: false не работают должным образом - PullRequest
3 голосов
/ 19 января 2010

Я использую плагин проверки jquery Джерна 1.6.

Моя цель - иметь следующее поведение: удалить сообщение об ошибке для элемента, как только пользователь сфокусирует его. Из того, что я понимаю, настройка 'focusCleanup: true' должна позаботиться об этом.

Однако (по крайней мере, в моем браузере (Firefox 3.5.7 в Linux)) я получаю желаемое поведение (т.е. сообщение об ошибке для поля, исчезающего после его фокусировки), если я нажимаю в поле; он не обрабатывает вкладку в поле правильно.

Пример кода:

HTML:

   <form id='abc' name='abc'>
    <input type="text" id="t1" name="t1"/>
    <input type="text" id="t2" name="t2"/>
    <input type="submit" id="submit" value='submit'/> 
    </form>

JS:

   $("#abc").validate({
   focusCleanup: true,
   focusInvalid: false,

    rules: {t1: {required: true, email:true}, t2: {required: true,email:true}}
});

Я устанавливаю 'focusInvalid: false', потому что в документах говорится, что следует избегать сочетания focusCleanup и focusInvalid; по моему опыту, комментируя эту строку, не имеет значения.

Я что-то не так делаю?

1 Ответ

8 голосов
/ 09 мая 2010

То, что вы испытываете, - это правильное поведение, возможно, даже немного нелогичное. Вы можете увидеть свой код в демоверсии здесь . Когда вы нажимаете, вы только фокусируете текстовое поле, однако, когда вы вкладываете, вы вызываете 2 важных события, вы запускаете и focusin , и keyup.

Так как вы запускаете keyup, то, что происходит, это означает очистку ошибки, но потому, что вы вводите что-то в поле ввода (оно не отличает вкладку от любой другой клавиши, например буквой) ... но затем он переоценивает, является ли поле допустимым для каждого keyup, отображая ту же ошибку, что и раньше, поскольку вкладка не оказала на это никакого влияния ... так как она не добавляла текст.

Если вы захотите отключить проверку onkeyup, она перестанет это делать, например:

$("#abc").validate({
  focusCleanup: true,
  rules: {t1: {required: true, email:true}, t2: {required: true,email:true}},
  onkeyup: false,
});​

Для сравнения вот этот код в демоверсии , так что вы можете сравнить его с оригинальной демонстрацией выше.

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