Проверка JQuery и путешествие пользователя - PullRequest
1 голос
/ 16 декабря 2010

Сражаюсь с тем, когда показывать мои сообщения об ошибках.Мой код ниже, но в основном форма должна проверять поля ввода на BLUR.Что по большей части вполне приемлемо.

Что мне нужно сделать, так это только сделать проверку достоверности на размытии, ЕСЛИ следующее, что они нажимают, это НЕ значок справки рядом с полем.

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

Я не могу проверить, является ли поле пустым, прежде чем пытаться проверить, потому что это обязательное поле, и мне нужноошибка также появляется, если поле оставлено пустым.

Это немного сложно объяснить, но, надеюсь, я справился.

HTML

    <div class="question" id="PD_email">

 <label>Email address</label>
 <input class="v-middle jsValid_email" id="email" type="text" size="50" />
 <label class="inline helpTrigger cursor">Why do we ask for this?</label>

 <div class="hidden help rounded03 aboveTrigger" style="left:385px;" id="emailAddress_help">
  HELP MESSAG IN HERE
 </div>

 <div class="error hidden">
  ERROR MESSAGE IN HERE
 </div>

</div>

<div class="question" id="PD_phone">

 <label>Phone number</label>
 <input class="v-middle jsValid_phone" id="phone" type="text" size="50" />
 <label class="inline helpTrigger cursor">Why do we ask for this?</label>

 <div class="hidden help rounded03 aboveTrigger" style="left:385px;" id="emailAddress_help">
  HELP MESSAGE IN HERE
 </div>

</div>

jQUERY SCRIPT

 $('input').blur(function() { 
         if ($(this).hasClass('jsValid_email')){
     if (($(this).val()=='') && ($(this).hasClass('jsOptional')))
  {/* do nothing*/}
  else {
  email(this.id);
        }

Затем вызывается функция, которая проверяет определенный тип поля ввода (электронная почта, телефон, альфа-адрес, домен и т. Д. И т. Д.), А затем, если произойдет сбойвалидацияns проверяет ON BLUR, он окрашивает поля и метки в красный цвет.

Так что, если есть какой-либо способ кодирования if (! ($ (this) .siblings ('. help'). click ()))Тип события, это было бы удобно!

Спасибо, Кевин

1 Ответ

0 голосов
/ 01 июля 2011

Событие размытия не знает, куда вы идете, поэтому это не может быть сделано таким способом. Вы должны сделать проверку позже, и я вижу два варианта:

  1. SetTimeout. Запустите проверку через несколько секунд и надейтесь, что событие Focus на кнопке помощи было выполнено, что должно указывать, что проверка не должна произойти. Это рискованно, но просто достичь.

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

Конечно, в любом из этих случаев вам придется вернуть фокус обратно на неисправный элемент управления. Если вам требуется это на нескольких элементах управления, тогда лучшим вариантом будет отправка проверки, даже если они могут быть недовольны этим. Сложность попыток обработать эту обработку на нескольких элементах управления поможет мне.

(и да, я понимаю, что вы, вероятно, уже разобрали это, но для кого-то еще они могут быть заинтересованы)

...