2015-01-21 73 views
1

我想覆盖jQuery Validator插件提供的'required'和'minlength'验证器的功能。以下是我的代码:jQuery验证器功能覆盖问题

jQuery(".form-cls").validate({ 
      errorElement: "span", 
      errorClass: "error-msg", 
     rules: { 
      email:{ 
       required:true, 
       email:true, 
       alreadyExistEmail: true 
      }, 
      user_email:{ 
       required:true, 
       email:true 
      }, 
      password:{ 
       required: function (element) { 
            return checkIfPasswordIsRequired(); 
           }, 
           minlength: function (element) { 
            return passwordLengthCheck(element); 
           } 
        } 
     } 
    }); 

function checkIfPasswordIsRequired() 
    { 
     if(jQuery("#facebook_id").length > 0 || jQuery("#linkedin_id").length > 0 || jQuery("#xing_id").length > 0) { 
      if(jQuery("#facebook_id").val() != "" || jQuery("#linkedin_id").val() != "" || jQuery("#xing_id").val() != "") { 
       return false; 
      } 
     } 
     return true; 
    } 





function passwordLengthCheck(element) 
    { 
     if(element.value.length < 6) 
     { 
      return false; 
     } 
     else 
     { 
      return true; 
     } 
    } 

现在,这里密码字段中第一个检查工作的罚款是“必需的”,但第二次检查是不工作的。如果已经检查了它,我的console.log(element.value.length),它会在每次更改/更改值时在密码字段中给出值的长度,但取决于函数passwordLengthCheck中的条件,它从不显示/显示错误。请帮助!

+0

为什么不使用自定义的验证密钥,而不是默认的'required'? – Runcorn 2015-01-21 08:22:14

+0

@Runcorn可以给你一个使用自定义验证的例子吗? – 2015-01-21 08:25:13

+0

看到这个http://stackoverflow.com/questions/241145/jquery-validate-plugin-how-to-create-a-simple-custom-rule – Runcorn 2015-01-21 09:06:54

回答

1

要检查字段长度,只需添加minlength属性的<input>标签,像

<input id="pw" name="pw" minlength="6" type="password"> 

添加一些自定义的验证,使用addMethod()

jQuery.validator.addMethod("func", function(value, element) { 
    return this.optional(element) || check expression here; 
}