基于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 屏蔽一个区域内的所有元素,禁止输入
Oct 22 Javascript
计算世界完全对称日的js代码,粗糙版
Nov 04 Javascript
javascript打印大全(打印页面设置/打印预览代码)
Mar 29 Javascript
Jquery Uploadify上传带进度条的简单实例
Feb 12 Javascript
js实现Select头像选择实时预览代码
Aug 17 Javascript
原生js仿jquery一些常用方法(必看篇)
Sep 20 Javascript
jQuery双向列表选择器select版
Nov 01 Javascript
基于JSONP原理解析(推荐)
Dec 04 Javascript
Vue作用域插槽slot-scope实例代码
Sep 05 Javascript
JavaScript实现Tab选项卡切换
Feb 13 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
Jul 17 Javascript
微信小程序实现拼图小游戏
Oct 22 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将数据导入到Foxmail的实现代码
2010/09/05 PHP
php递归创建和删除文件夹的代码小结
2012/04/13 PHP
PHP读取txt文本文件并分页显示的方法
2015/03/11 PHP
php生成圆角图片的方法
2015/04/07 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
PHP使用标准库spl实现的观察者模式示例
2018/08/04 PHP
Swoole源码中如何查询Websocket的连接问题详解
2020/08/30 PHP
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
了解Javascript的模块化开发
2015/03/02 Javascript
纯javascript实现四方向文本无缝滚动效果
2015/06/16 Javascript
基于jquery animate操作css样式属性小结
2015/11/27 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
原生js实现图片轮播特效
2015/12/18 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
Python实现的多线程端口扫描工具分享
2015/01/21 Python
python获取栅格点和面值的实现
2020/03/10 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
python numpy实现rolling滚动案例
2020/06/08 Python
python rolling regression. 使用 Python 实现滚动回归操作
2020/06/08 Python
We Fashion荷兰:一家国际时装公司
2018/04/18 全球购物
私有程序集与共享程序集有什么区别
2013/04/05 面试题
工程概预算专业毕业生求职信
2013/10/04 职场文书
销售总监工作职责
2013/11/21 职场文书
教师申诉制度
2014/01/29 职场文书
中班上学期幼儿评语
2014/04/30 职场文书
代领毕业证委托书
2014/08/02 职场文书
读完《骆驼祥子》的观后感!
2019/07/05 职场文书
上个世纪50年代的可穿戴技术:无线电帽子
2022/02/18 无线电
详解Python内置模块Collections
2022/03/22 Python