代码之家  ›  专栏  ›  技术社区  ›  Hello Universe

如何使用jQuery验证以准确的澳大利亚格式验证输入字段phone?

  •  0
  • Hello Universe  · 技术社区  · 6 年前

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

    然后在validate rules函数中使用以下命令

       phone: {
         phoneAU: true
       },
    

    我正在使用jQuery验证。不过,它正在按要求考虑。我不想被要求这样做。我只想确保每当用户填写时,他们都会填写正确的澳大利亚电话号码格式。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Sparky    6 年前

    这个 以前 this.optional(element)

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

    或者简单地说这一行速记版本。。。

    return this.optional(element) || value.match(phoneExpression);
    
        2
  •  1
  •   Jeto    6 年前

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

    编辑 :请参阅@Sparky的答案以获得更优/合适的解决方案。

    推荐文章