2014-12-08 3 views
-1

Я использую плагин JQuery Validate, и у меня возникают проблемы с моим электронным сообщением «Пожалуйста, введите действительный адрес электронной почты». я постоянно печатаю. Это не происходит ни с одной другой областью. Все остальное будет отображать сообщение до тех пор, пока не будет принято правило. Мой код подтверждения ниже:JQuery ValidateFlickering Email Message on Keyup

jQuery.validator.addMethod("textonlyname", function(value, element) { 
     return /^[A-Za-z\s]+$/.test(value); 
    }, "Please enter text and spaces only."); 
    jQuery.validator.addMethod("complexpassword", function(value, element) { 
     return /\d/.test(value) && /[a-z]/.test(value) && /[A-Z]/.test(value); 
    }, "Your password must contain at least one number, one upper-case character & one lower-case character."); 

    $("#frmRegister").validate({ 
     rules: { 
      txtRegisterName: { 
       textonlyname: true 
      }, 
      txtRegisterPassword: { 
       complexpassword: true 
      } 
     }, 
     errorPlacement: function(error, element) { 
      error.appendTo(element.next()); 
     }, 
     highlight: function(element) { 
      $(element).next().show(); 
     }, 
     unhighlight: function(element) { 
      $(element).next().hide(); 
     }, 
     onkeyup: function(element, event) { 
      if (event.which === 9 && this.elementValue(element) === "") { 
       return; 
      } else { 
       this.element(element); 
      } 
     } 
    }); 

    $("#frmLogin").validate(); 

Элемент ввода для электронной почты, использующий их тип письма HTML5.

Любая идея о том, как остановить это? Цитата

+0

Вы заменяемое по умолчанию 'onkeyup' функции жалуясь, что она сломана. Попробуйте удалить пользовательскую функцию 'onkeyup' и просто включите встроенную функцию плагина. – Sparky

+0

Вы также спрашиваете нас о поле электронной почты, где ваш код не показывает такую ​​вещь. Другими словами, я создал демонстрацию на основе кода, который вы опубликовали, и он не демонстрирует никаких таких мерцающих проблем. http://jsfiddle.net/eswwyzq8/ – Sparky

+0

И, наконец, ваш OP не хватает соответствующего HTML-кода, необходимого для правильной демонстрации. – Sparky

ответ

0

OP:

Я использую плагин JQuery Validate и у меня возникают проблемы с моей электронной почты сообщение «Пожалуйста, введите действительный адрес электронной почты.» я постоянно печатаю.

Вашего OP отсутствует весь соответствующий HTML и нет коды проверки электронной почты, так что это невозможно для меня, чтобы воспроизвести проблему мерцающей в jsFiddle.

Однако на основе этого кода ...

highlight: function (element) { 
    $(element).next().show(); 
}, 
unhighlight: function (element) { 
    $(element).next().hide(); 
} 

Вы не используете highlight и unhighlight функции по назначению. These callbacks are meant for "highlighting" the field by adding/removing the relevant classes for valid/invalid.

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


Я также не понимаю, почему вы используете пользовательскую функцию onkeyup, когда вы утверждаете, что есть проблемы в ходе мероприятия KeyUp. Удалите свою настраиваемую функцию onkeyup, чтобы убедиться, что поведение клавиш по умолчанию, встроенное в плагин, является достаточным, прежде чем вносить какие-либо изменения.

Работа DEMO: http://jsfiddle.net/81poLnLg/

+0

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