2010-10-21 90 views
0

在注册表单中,middleName字段是可选的。当用户输入他/她的middleName时,它应该验证该字段。jQuery验证 - 可选字段

我已经使用下面的代码来实现上面的场景,但它不工作。

$("#middleName").rules("add", {checkName: true, required: false, messages: {checkName: "Please enter a valid middle name"} }); 

jQuery.validator.addMethod("checkName", 
     function(value, element) { 
      var regExp = new RegExp(/^[a-zA-Z0-9\s|\,|\.|\-|\']+$/); 
      return regExp.test(value); 
     }, 
     "Please enter a valid name." 
); 

任何人都可以建议我实现上述场景。

回答

6

在您自定义的方法,你需要添加可选条款,例如:

jQuery.validator.addMethod("checkName", function(value, element) { 
    var regExp = new RegExp(/^[a-zA-Z0-9\s|\,|\.|\-|\']+$/); 
    return this.optional(element) || regExp.test(value); 
}, "Please enter a valid name."); 

你可以在验证库的additional methods file中看到像这样的例子作为参考,基本上这个ju st增加了理智/“我是否需要?”检查结果。

-1

我会做这样的事情:

jQuery("#middlename").bind("KeyUp").function(validateMiddleName()); 

然后

function validateMiddleName() 
{ 
    if (jQuery("#middlename")) 
    { 
     //Do the validation 
    } 
} 
+0

林不知道的是,语法是100 %,但你明白了。 – femseks 2010-10-21 09:23:53

0

下面是答案。

您可以通过两种方式使用它。当你想要它作为可选的字段,然后说“checkName:可选”。

$("#middleName").rules("add", {checkName: 'opt', messages: {checkName: "Please enter a valid middle name"} }); 

当你想把它当作必填字段,然后说checkName: 'true'

$("#middleName").rules("add", {checkName: true, messages: {checkName: "Please enter a valid middle name"} }); 

和您的规则将

jQuery.validator.addMethod("checkName", function(value, element, param) { 
    var regExp = new RegExp(/^[a-zA-Z0-9\s|\,|\.|\-|\']+$/); 
    if(param == 'opt'){ 
     return this.optional(element) || regExp.test(value); 
    }else{ 
     return regExp.test(value); 
    } 
}, "Please enter a valid name."); 

好运