手机号码输入时隔3位一个空格 再隔4位一个空格的效果

发布于 2022-09-01 20:49:08 字数 101 浏览 16 评论 0

<input type="number" id="number" style="width:200px;height:30px;border:1px solid #ccc"/>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

花落人断肠 2022-09-08 20:49:08

简单写一下,这种类似的问题能搜到很多,多搜一下,应该没必要提问吧~

<input type="text" id="number" maxlength="13" />
document.getElementById("number").onkeyup = function() {
  var text_len = this.value.length;
  if (text_len === 3 || text_len === 8) {
    this.value += " ";
  }
};
半山落雨半山空 2022-09-08 20:49:08

先上代码
`

$("#number").keyup(function() {
    if (this.value.length > 10) {
        $(this).val(doFilter(this.value));
    }
});  

function doFilter(value) {
    var temp = [];
    temp[0] = value.slice(0, 3);
    temp[1] = value.slice(3, 7);
    temp[2] = value.slice(7);
    return temp.join(" ");
}

`
然后我想说,你在input中设置了type='number',所以导致我转换完的你想要的那种格式的字符串就默认被干掉了...
至于怎么取舍,你自己弄了,我的实现可能有些笨拙,新手,还望不吝赐教!

怎言笑 2022-09-08 20:49:08

<input type="tel">代替type="number"的好处是

  1. 能够调出手机端数字键盘(包括安卓和ios)

  2. 可以识别非数字输入(包括空格)

然后通过mValue = input.value.replace(/\D/g,'')去掉用户输入的所有空格,

然后再用最笨的办法切割字符串

    if (mValue != '') {
      let mLength = mValue.length;
      if (mLength <= 3) {
        return mValue;
      } else {
        if (mLength <= 7) {
          return mValue.substring(0, 3) + ' ' + mValue.substring(3, mLength)
        } else {
          return mValue.substring(0, 3) + ' ' + mValue.substring(3, 7) + ' ' + mValue.substring(7, 11)
        }
      }
    }
  }
日暮斜阳 2022-09-08 20:49:08

这样会有两个问题:
1、删除时,用户会莫名其妙的感觉到多删除了两个空格,输入时自己并没有输入这两个空格;
2、删除时,遇到空格时就删不了了;

可以监听keyup事件,pc端和移动端都适用。以下代码在输入和删除时都没有问题。

  var phoneNum = this.value.trim();
  //如果是删除按键,则什么都不做
  if (e.keyCode === 8) {
    this.value = phoneNum;
    return;
  }

  var len = phoneNum.length;
  if (len === 3 || len === 8) {
    phoneNum += ' ';
    this.value = phoneNum;
  }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文