JS 银行卡格式输入框

               最近工作涉及到这样一个问题,客户需要在一个输入框中输入他的银行卡号,我们知道,银行卡号的位数非常长,如果不加以区分的全部显示在用户面前,用户的体验度肯定不高,所以诸如支付宝之类的软件在用户需要输入银行卡号时都添加了一定的格式,就是在用户输入卡号时,以4个数字为一组的形式显示给用户,譬如

          6214 1234 5678 1234

          那么今天就在这里大致描述一下如何实现:

          其实从在输入的时候能够非常清晰的了解算法是怎样的

          1.每输入4个数字,自动在后面添加空格。

          2.如果用户自行输入空格,吃掉(这里可以加强一下,如果不是数字就直接吃掉)

          3.在用户回删的时候如果遇到前面的一个字符是空格,则连空格一起删掉

 
 
input.addEventListener('keyup',function(event){
    var e = event||window.event||arguments.callee.caller.arguments[0];
    if( e.keyCode!==8 && (e.keyCode<48 || (e.keyCode>57&&e.keyCode<96) || e.keyCode>105 )){
        this.value = this.value.slice(0,-1);
    }
    if(e.keyCode === 8){
        if(this.value.slice(-1) === ' '){
            this.value = this.value.slice(0,-1);
        }
    }
    else if(e.keyCode !== 8){
        switch(this.value.length){
            case 4:
                this.value += ' ';
                break;
            case 8 + 1:
                this.value += ' ';
                break;
            case 12 + 2:
                this.value += ' ';
                break;
        }
    }
});
                    这里的代码的顺序很重要,由于选择的是keyup事件,所以判断字符是不是一定要放在前面(这里也可以用正则),否则就会出现,用户输入的是非数字字符,刚好是在第4个位置,则程序会先补充一个空格,然后发现键入的字符非法,进行删除,导致了非数字字符继续留在输入框内

             如果有什么更合适的方法,也欢迎大家指教

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值