2010-10-21 91 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."); 

好運