Возникли затруднения при проверке номера телефона в США в jQuery - требуется и PhoneUS - PullRequest
2 голосов
/ 06 января 2011

Я беру на себя существующий проект с кодом, который написан повсюду, и мне трудно проверить поле номера телефона по следующим правилам:

-Required -Conformsна номер телефона в США

Я просмотрел весь сайт jQuery и попробовал несколько реализаций текущего кода ниже ....

Код заголовка:

    <script>
  $(document).ready(function(){
    $("#the_form").validate();
  });
  </script>

      <script>
    $(document).ready(function(){
    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");
  </script>

    <script>
    $("#col_5_row_1").rules("add", {
 phoneUS: true
 }
});
    </script>

Входной код:

<input type="text" title="Phone" class="required phoneUS" id="col_5_row_1" name="col_5_row_1">

Это действительно для "требуется", но не "phoneUS".Если я пытаюсь выполнить проверку для требуемой + электронной почты, это тоже работает.

Я попытался поместить пользовательское правило выше функции validate и ниже нее, я попытался без функции rules («add») иказалось бы, каждая комбинация.Я в тупике.

Есть идеи?Спасибо за тонну.

1 Ответ

1 голос
/ 06 января 2011

Так что я не уверен, почему метод не возвращает сообщение, но он работает. Но чтобы показать сообщение, вы можете сделать что-то вроде этого:

$(document).ready(
    function()
    {
        $.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");

        $("#the_form").validate(
        {
            rules: { col_5_row_1: { required: true, phoneUS: true } },
            messages: { col_5_row_1: { required: "required", phoneUS: "US format" } }
        });
    });

Вот также рабочий пример:

http://jsfiddle.net/GcATB/

EDIT: Еще одна вещь, которая меня только что осенила, - это наличие файла дополнительных методов, который является расширением для валидатора, в котором есть этот и другие методы. Вы должны также проверить это, вместо того, чтобы писать свой собственный для phoneUS.

http://ajax.microsoft.com/ajax/jquery.validate/1.7/additional-methods.js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...