jQuery Validate Plugin:电子邮件模式的测试值?

时间:2011-11-05 20:06:46

标签: javascript jquery jquery-validate validation

我正在我网站上的所有表单上使用jQuery Validate Plugin。

例如这样:

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

这很好用。现在我想知道是否也可以为一个有效的电子邮件地址测试一个简单的$('#selector'),如果有的话。所以没有任何形式?

E.g。我有一个id为#email的输入,我当前处于按键功能中,只要键入输入内部的键,我就会触发函数。

是否可以在此#email字段中测试有效的电子邮件并执行某些操作?有点像...

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

是否可以使用该插件?

提前谢谢你!

1 个答案:

答案 0 :(得分:5)

不是那么简单,但可以通过以下方式完成:

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

如果是有效的电子邮件,此调用将返回true

简短说明:

第一行:您可以直接调用电子邮件的验证方法

第二行:您必须提供一个返回false的方法,表示此字段不是可选的。

第三行:提供实际值

Forth Line:Provude the element,这不是必需的,你什么都不提供,它会起作用。电子邮件验证程序会检查此元素是否为optinal。但是,无论我们得到什么论证,我们都提供了错误,这无关紧要

为了让事情变得简单,你可以将它包装在你自己的插件中:

(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()

进行调用