Как продлить валидацию Jquery для проверки 2 из 3 требуемого номера телефона? - PullRequest
0 голосов
/ 03 сентября 2010

Я использую jQuery Validation, и вот расширение, которое я использую для проверки номера телефона в США.

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");

Это прекрасно работает, но что, если я хочу проверить только 2 из 3 номеров.

Например, у меня есть

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}
  }
});

Ответы [ 2 ]

0 голосов
/ 08 сентября 2010

Нашел ответ здесь:

jQuery Validate - требуется заполнить хотя бы одно поле в группе

Кроме того, прежде чем я нашел это, я обнаружилс моим собственным решением, которое работает.

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 голосов
/ 03 сентября 2010

используйте класс в полях ввода

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}
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...