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

mat*_*att 4 javascript validation jquery jquery-validate

我正在我网站上的所有表单上使用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
    }
});
Run Code Online (Sandbox Code Playgroud)

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

例如,我有一个id为的输入,#email我目前处于按键功能,只要键入输入内部的键,我就会触发函数.

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

if ( $('#email').validate(rules:email) ) {
   is_email = true;
}
Run Code Online (Sandbox Code Playgroud)

这个插件有可能吗?

先感谢您!

top*_*pek 5

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

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

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);
Run Code Online (Sandbox Code Playgroud)

并称之为 $('#email').validate_email()