Как проверить правильность ввода в поле телефона в точном австралийском формате с помощью jQuery Validation? - PullRequest
0 голосов
/ 01 сентября 2018

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

        <div>
            <label for="contactPhone">Your Phone: </label>
            <input type="phone" class="form-control eform__phone"
                   id="contactPhone" name="phone"
                   placeholder="e.g. 04000000000">
        </div>

JavaScript:

  /**
   * validate phone number according to australian format
   * Ref: https://ilikekillnerds.com/2014/08/regular-expression-for-validating-australian-phone-numbers-including-landline-and-mobile/
   */
  jQuery.validator.addMethod("phoneAU", function(value, element) {
    var phoneExpression = /^\({0,1}((0|\+61)(2|4|3|7|8)){0,1}\){0,1}(\ |-){0,1}[0-9]{2}(\ |-){0,1}[0-9]{2}(\ |-){0,1}[0-9]{1}(\ |-){0,1}[0-9]{3}$/;

    if (value.match(phoneExpression)) {
      return true;
    }
    return false;
  }, jQuery.validator.messages.phoneAU || "Please specify a valid phone number");

И затем использовал следующее в функции проверки правил

   phone: {
     phoneAU: true
   },

Я использую проверку jQuery. Тем не менее, он рассматривает по мере необходимости. Я не хочу, чтобы это потребовалось. Я просто хочу убедиться, что всякий раз, когда пользователь заполняет его, он заполняет его соответствующим австралийским форматом номера телефона.

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Ответ, принятый ранее , не является нормальным способом решения этой ситуации. Чтобы сохранить возможность использовать настраиваемое правило, не делая его обязательным, используйте «ИЛИ» this.optional(element) как часть условного, то есть, как создаются правила по умолчанию в плагине.

if (this.optional(element) || value.match(phoneExpression)) {
  return true;
}
return false;

или просто эта однострочная сокращенная версия ...

return this.optional(element) || value.match(phoneExpression);
0 голосов
/ 01 сентября 2018

Просто измените ваше "проверенное" условие на это:

if (value.length === 0 || value.match(phoneExpression)) {
  return true;
}

Редактировать : см. Ответ @ Sparky для более оптимального / подходящего решения.

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