jQuery Validate Plugin: проверить значение для шаблона электронной почты? - PullRequest
4 голосов
/ 06 ноября 2011

Я использую плагин jQuery Validate во всех моих формах на моем сайте.

Примерно так:

$("#accountUserSettingsForm").validate({
    rules: {
        'user[email]': {
            required: true,
            email: true
        }
    },
    messages: {
        'user[email]': {
            required: "*",
            email: "No valid email address."
        }
    },
    submitHandler: function() {
        // do something
    }
});

Это прекрасно работает.Теперь мне интересно, можно ли проверить простой $ ('# selector') на действительный адрес электронной почты, и если да, то сделать что-нибудь.Так что вообще не имея никакой формы?

Например, у меня есть вход с идентификатором #email, и я в настоящее время нахожусь в функции нажатия клавиш, где я запускаю функции всякий раз, когда набирается клавиша внутри этого ввода.1009 *

Можно ли просто проверить это поле #email на наличие действительного электронного письма и что-то сделать?Что-то вроде ...

if ( $('#email').validate(rules:email) ) {
   is_email = true;
}

возможно ли с этим плагином?

Заранее спасибо!

1 Ответ

5 голосов
/ 06 ноября 2011

Не все так просто, но это можно сделать с помощью:

$.validator.methods.email.call(
  {optional:function(){return false}},
  $('#email').val(), 
  $('#email'));

Этот вызов вернет true, если это действительный адрес электронной почты

Краткое объяснение:

Первая строка: вы можете вызвать метод валидатора для электронной почты напрямую

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

Третья строка: укажите фактическое значение

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

Чтобы сделать вещи немного проще, вы можете обернуть это в свой собственный плагин:

(function($){
$.fn.validate_email = function(){
  var text =  this.first().text();

  return $.validator.methods.email.call(
    {optional:function(){return false}},
    text, 
    this);
};  
})(jQuery);

и позвоните по номеру $('#email').validate_email()

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