Javascript Input框输入内容自动分组

Javascript Input框输入内容自动分组

昨天在找资料的时候,无意发现一片文章,是关于在输入框中输入时,每四位自动加空格。

看了十多分钟,觉得文中所用的方法实在太麻烦了,于是按自己的思路考虑一个更简单的方法:

document.getElementById("yourId").addEventListener("input", function(){
   var tmp = document.getElementById("yourId").value;
   if ((tmp.length+1)%5===0)
   {
       tmp = tmp + " ";
   }
   document.getElementById("yourId").value = tmp;
});

So easy,不是吗?

可是事情并不是这么简单滴,虽然实现了每4位自动加空格,可是删除的时候,却删不了空格,因为程序会立刻自动添加空格。

晕,掉坑里了!

不过思路方向应该是对滴,苦思冥想30分钟,尝试过几次失败后,终于想到一个方法:

要考虑删除的情况,那就只能重组输入框的内容了!

document.getElementById("yourId").addEventListener("input", function(){
    var op="";
    var tmp = document.getElementById("yourId").value.replace(/\s/g, "");
    for (var i=0;i<tmp.length;i++)
    {
        if (i%4===0 && i>0)
        {
            op = op + " " + tmp.charAt(i);
        } else {
            op = op + tmp.charAt(i);
        }
    }
    document.getElementById("yourId").value = op;
});

以前不知道有charAt这个东东,还得把字符串转成数组,然后再转回字符串…尴尬

嗯嗯,好了,这样基本就OK了。再回头看看别人的文章,还有限制只能输入数字,那这个就简单了,只需要把第三行的正则表达式修改一下就可以实现:

var tmp = document.getElementById("yourId").value.replace(/\D/g, "");

DOM代码比较长,不利于压缩和review,所以顺手也写了jQuary的方法,看起来清爽多了:

$(document).on('input propertychange', '#yourId', function(){
   var op="";
   var tmp = $(this).val().replace(/\D/g, "");
   for (var i=0;i<tmp.length;i++)
   {
       if (i%4===0 && i>0)
       {
           op += " " + tmp.charAt(i);
       } else {
           op += tmp.charAt(i);
       }
   }
   $(this).val(op);
});

BTW:说明一下,加入propertychange事件是为了兼容一些老浏览器。

那么,问题来了,如果想改成手机号码的 3-4-4 格式呢?你知道怎么改吗?

还有,以上实例可应用在输入日期或MAC地址等数据时自动添加分割符哦~~

欢迎关注和转发我的公众号

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值