基于jquery实现的银行卡号每隔4位自动插入空格的实现代码


Posted in Javascript onNovember 22, 2016

难点不是插入空格,而是修正光标的位置,这个只支持IE9+、chrome浏览器

注意:这个使用了jquery框架

核心代码

$(function() {

      $('#kahao').on('keyup', function(e) {
       //只对输入数字时进行处理
        if((e.which >= 48 && e.which <= 57) ||
            (e.which >= 96 && e.which <= 105 )){
          //获取当前光标的位置
          var caret = this.selectionStart
          //获取当前的value
          var value = this.value
          //从左边沿到坐标之间的空格数
          var sp = (value.slice(0, caret).match(/\s/g) || []).length
          //去掉所有空格
          var nospace = value.replace(/\s/g, '')
          //重新插入空格
          var curVal = this.value = nospace.replace(/(\d{4})/g, "$1 ").trim()
          //从左边沿到原坐标之间的空格数
          var curSp = (curVal.slice(0, caret).match(/\s/g) || []).length
         //修正光标位置
         this.selectionEnd = this.selectionStart = caret + curSp - sp
        
        }
      })
    })

完整代码:已经测试

<!DOCTYPE html>
<html>

<head lang="en">
  <meta charset="UTF-8">
  <title>银行卡号4位空格</title>
  <script src="http://j2.58cdn.com.cn/js/jquery-1.8.3.js"></script>
</head>

<body>
  <input type="text" id="kahao" />
  <script>
    $(function() {

      $('#kahao').on('keyup', function(e) {
       //只对输入数字时进行处理
        if((e.which >= 48 && e.which <= 57) ||
            (e.which >= 96 && e.which <= 105 )){
          //获取当前光标的位置
          var caret = this.selectionStart
          //获取当前的value
          var value = this.value
          //从左边沿到坐标之间的空格数
          var sp = (value.slice(0, caret).match(/\s/g) || []).length
          //去掉所有空格
          var nospace = value.replace(/\s/g, '')
          //重新插入空格
          var curVal = this.value = nospace.replace(/(\d{4})/g, "$1 ").trim()
          //从左边沿到原坐标之间的空格数
          var curSp = (curVal.slice(0, caret).match(/\s/g) || []).length
         //修正光标位置
         this.selectionEnd = this.selectionStart = caret + curSp - sp
        
        }
      })
    })
  </script>
</body>

</html>

经过测试确实很好用,里面用到了很多的正则

\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。

关于正则表达式的教程可以参考这篇文章:

Javascript 相关文章推荐
JQuery jsonp 使用示例代码
Aug 12 Javascript
Jquery知识点二 jquery下对数组的操作
Jan 15 Javascript
JavaScript 产生不重复的随机数三种实现思路
Dec 13 Javascript
jquery获取复选框被选中的值
Apr 10 Javascript
JQuery菜单效果的两个实例讲解(3)
Sep 17 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
Jan 18 Javascript
JavaScript判断微信浏览器实例代码
Jun 13 Javascript
微信小程序实战之顶部导航栏(选项卡)(1)
Jun 19 Javascript
浅谈Vue render函数在ElementUi中的应用
Sep 06 Javascript
javascript面向对象三大特征之继承实例详解
Jul 24 Javascript
vue在响应头response中获取自定义headers操作
Jul 24 Javascript
vue项目打包后请求地址错误/打包后跨域操作
Nov 04 Javascript
详解Js模板引擎(TrimPath)
Nov 22 #Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
Nov 22 #Javascript
AngularJS中指令的四种基本形式实例分析
Nov 22 #Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
Nov 22 #Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
Nov 22 #Javascript
详解js中Json的语法与格式
Nov 22 #Javascript
AngularJS中一般函数参数传递用法分析
Nov 22 #Javascript
You might like
php中定时计划任务的实现原理
2013/01/08 PHP
深入掌握include_once与require_once的区别
2013/06/17 PHP
php 使用file_get_contents读取大文件的方法
2014/11/13 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
简单理解PHP的面向对象编程方式
2016/05/17 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
2019/10/15 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
jQuery的链式调用浅析
2010/12/03 Javascript
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
JS写谷歌浏览器chrome的外挂实例
2018/01/11 Javascript
如何更好的编写js async函数
2018/05/13 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
2019/12/25 Javascript
Python 解析XML文件
2009/04/15 Python
详解Django中的form库的使用
2015/07/18 Python
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
基于python实现简单日历
2018/07/28 Python
Python global全局变量函数详解
2018/09/18 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
Python获取统计自己的qq群成员信息的方法
2019/11/15 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
Python  word实现读取及导出代码解析
2020/07/09 Python
装潢设计实习自我鉴定
2013/09/19 职场文书
办公室文员工作自我评价
2013/12/01 职场文书
工程项目经理岗位职责
2013/12/15 职场文书
养牛场项目建议书
2014/05/13 职场文书
小学校长汇报材料
2014/08/20 职场文书
实习生工作证明范本
2014/09/14 职场文书
个人自荐书范文
2015/03/09 职场文书
python 管理系统实现mysql交互的示例代码
2021/12/06 Python