2010-09-02 28 views
0

我正在使用jQuery驗證,這裏是我用來驗證美國電話號碼的擴展。如何擴展Jquery驗證以驗證3所需電話號碼中的2個?

jQuery.validator.addMethod("phoneUS", function(phone_number, element) { 
     phone_number = phone_number.replace(/\s+/g, ""); 
     return this.optional(element) || phone_number.length > 9 && 
      phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); 
    }, "Please specify a valid phone number"); 

這很好,但如果我只想驗證3個數字中的2個,該怎麼辦?

舉個例子,我在輸入

Home Phone: <input name="h" ...> 
Work Phone: <input name="w" ...> 
Cell Phone: <input name="c" ...> 


$('form').validate({ 
    rules: { 
    h: {phoneUS: true}, 
    w: {phoneUS: true}, 
    c: {phoneUS: true} 
    } 
}); 

回答

0

找到了答案:

jQuery Validate - require at least one field in a group to be filled

另外,在我發現之前,我確實想出了自己的解決方案。

h: { 
    phoneUS: true, 
    required: function(element) { 
     return ($('input.phones:blank').length >= 2); 
    } 
}, 
c: { 
    phoneUS: true, 
    required: function(element) { 
     return ($('input.phones:blank').length >= 2); 
    } 
}, 
w: { 
    phoneUS: true, 
    required: function(element) { 
     return ($('input.phones:blank').length >= 2); 
    } 
} 
0

使用類字段

Home Phone: <input name="h" class="phones"> 
Work Phone: <input name="w" class="phones"> 
Cell Phone: <input name="c" class="phones"> 

,並在此更改您的jquery

$('.phones').validate({ 
    rules: { 
    h: {phoneUS: true}, 
    w: {phoneUS: true}, 
    c: {phoneUS: true} 
    } 
}); 
+0

這是如何要求輸入3個電話號碼中的至少2個?其中一個條件必須是真實的:家庭+工作或工作+小區或家庭+小區組合。 – nolabel 2010-09-03 00:16:58