基于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 相关文章推荐
PJBlog插件 防刷新的在线播放器
Oct 25 Javascript
JS的replace方法介绍
Oct 20 Javascript
Js中获取frames中的元素示例代码
Jul 30 Javascript
jquery删除ID为sNews的tr元素的内容
Apr 10 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
Apr 03 Javascript
AngularJS模块管理问题的非常规处理方法
Apr 29 Javascript
jQuery简单实现彩色云标签效果示例
Aug 01 Javascript
JS实现字符串中去除指定子字符串方法分析
May 17 Javascript
angularJS1 url中携带参数的获取方法
Oct 09 Javascript
JS中注入eval, Function等系统函数截获动态代码
Apr 03 Javascript
微信小程序实现语音识别转文字功能及遇到的坑
Aug 02 Javascript
vue中 数字相加为字串转化为数值的例子
Nov 07 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
DSP接收机前端设想
2021/03/02 无线电
php empty函数 使用说明
2009/08/10 PHP
php入门学习知识点三 PHP上传
2011/07/14 PHP
php 强制下载文件实现代码
2013/10/28 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
几个高效,简洁的字符处理函数
2007/04/12 Javascript
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
利用jQuery接受和处理xml数据的代码(.net)
2011/03/28 Javascript
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
js获取url中指定参数值的示例代码
2013/12/14 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
JavaScript实现Java中StringBuffer的方法
2015/02/09 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
JavaScript驾驭网页-CSS与DOM
2016/03/24 Javascript
轻松掌握JavaScript装饰者模式
2016/08/27 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
AngularJS创建一个上传照片的指令实例代码
2018/02/24 Javascript
微信小程序实现顶部导航特效
2019/01/28 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
2019/07/22 Javascript
vue点击按钮动态创建与删除组件功能
2019/12/29 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
Python列表计数及插入实例
2014/12/17 Python
python操作文件的参数整理
2019/06/11 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
IBatis持久层技术
2016/07/18 面试题
大学毕业生通用求职信
2013/09/28 职场文书
中学生自我鉴定
2014/02/04 职场文书
《颐和园》教学反思
2014/02/26 职场文书
实习单位鉴定评语
2014/04/26 职场文书
影视广告专业求职信
2014/09/02 职场文书
企业法人授权委托书
2014/09/25 职场文书
公司联欢会主持词
2015/07/04 职场文书