使用jQuery验证电话号码

时间:2015-07-04 06:04:01

标签: jquery validation

我有这个非常酷的验证脚本,用于输入我喜欢的货币

Demo Currency Validator

$("#saleprice").on("keyup", function(){
    var valid = /^\d{0,4}(\.\d{0,2})?$/.test(this.value),
        val = this.value;

    if(!valid){
        console.log("Invalid input!");
        this.value = val.substring(0, val.length - 1);
    }
});

但我希望有同样的方法来验证电话号码。这是我用手机的正则表达式的小提琴,但我似乎无法让它工作。即使我在正则表达式中指定了()以及数字和-.等字符,代码也不允许输入任何字符。

Demo Telephone Validator

$("#telephone").on("keyup", function(){
    var valid = /\(?([0-9]{3})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/.test(this.value),
        val = this.value;

    if(!valid){
        console.log("Invalid input!");
        this.value = val.substring(0, val.length - 1);
    }
});

我想允许以下格式的电话号码。

  • (123)456 7899
  • (123).456.7899
  • (123)-456-7899
  • 123-456-7899
  • 123 456 7899
  • 1234567899

2 个答案:

答案 0 :(得分:2)

  

更好的方法是使用jquery input masks。您也可以自定义   input mask ..

点击链接

1。masking 1

2。masking 2

答案 1 :(得分:1)

尝试将input元素maxlength设置为10;替换非数字字符; input长度为十个字符时的格式值



$("input").on("keyup", function(e) {
  e.target.value = e.target.value.replace(/[^\d]/, "");
  if (e.target.value.length === 10) {
    // do stuff
    var ph = e.target.value.split("");
    ph.splice(3, 0, "-"); ph.splice(7, 0, "-");
    $("label").html(ph.join(""))
  }
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" maxlength="10" placeholder="tel: input ten numbers" />
<label for="input"></label>
&#13;
&#13;
&#13;