2011-11-05 63 views
4

我在我的网站上的所有表单上使用jQuery验证插件。jQuery验证插件:电子邮件模式的测试值?

像例如所以:

$("#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; 
} 

是否可以使用该插件?

谢谢你提前!

回答

5

并非想象中的那么简单,但它是可以做到的:

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

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

简短说明:

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

第二行:您必须提供一个会面hod返回false,这表明这个字段不是可选的。

第三行:提供实际值

第四行:Provude的元素,这是不是真的有必要,你可以提供什么和它的工作。电子邮件验证器使用此元素来检查它是否是可选的。但是,为大家提供一个虚假的,无论我们得到的说法,这并不重要

为了让事情简单一点,你可以把这个包在自己的插件:

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

叫它
+1

哇,谢谢!完美+1 – matt