允许用户在文本框

时间:2018-05-16 15:41:58

标签: javascript jquery html

我正在尝试设置具有以下要求的电话字段:

  • " +"如果作为第一个字母输入,则可以来,否则不是
  • 只能有数字或空格
  • 不能超过11个数字

我这样做对数字和空格都很好,但我不知道如何限制11个数字。

function validatePhone(phone) {
        var filter = /^(?=.*\d)[\d ]+$/;
        if (filter.test(phone)) {
          return phone;
        } else {
          return phone.slice(0,-1);
}

编辑:

我不想将所有条目计为11.我想只计算数字而不是空格,总数应该是11或10

2 个答案:

答案 0 :(得分:2)

此建议的解决方案删除所有空格,然后匹配字符串,可选地从+开始,然后严格地为11位。



document.querySelector('#phoneNumber1').addEventListener('input', function(e){
  if (/^\+?\d{11}$/.test(e.target.value.replace(/ /g, ''))) {
    console.log('valid');
  } else {
    console.log('invalid');
  }
});

<input type="text" id="phoneNumber1">
&#13;
&#13;
&#13;

答案 1 :(得分:1)

这是一个在第十一个数字之后修剪结果的函数,忽略空格

&#13;
&#13;
function validatePhone(phoneNumber){
  return /( *\d){0,11}/.exec(phoneNumber)[0]
}

console.log(validatePhone('12345671'))
console.log(validatePhone('12345678901'))
console.log(validatePhone('123456789012'))
console.log(validatePhone('1234 56 78   901'))
console.log(validatePhone('123456  7  89012'))
&#13;
&#13;
&#13;

正则表达式查找任意数量的空格,然后查找一个数字,最多11次并返回第一个匹配。

您仍然需要处理起始加号和失败(例如不匹配),但这是一个起点