这篇文章主要介绍了js格式化输入框内金额、银行卡号,采用“keyup”事件处理格式化,每4位数一组中间空格隔开,如何格式化输入框内金额、银行卡号,需要了解的朋友可以参考一下

我们在项目中经常遇到需要格式化的金额数和银行卡号,一般我们常见的有两种表现形式:输入框内格式化和输入框外格式化。这里我主要把我在项目中遇到的输入框内部格式化的,代码亮出来,框外的格式化相对简单一点。

页面代码:

  1. <div class="wrap">
  2. <input type="text" id="bankCard" placeholder="输入银行卡号">
  3. </div>
  4.  
  5. <div class="wrap">
  6. <input type="text" id="moneyNum" placeholder="输入金额">
  7. </div>

银行卡号格式化

  1. //卡号每4位一组格式化
  2. $("#bankCard").on("keyup", formatBC);
  3.  
  4. function formatBC(e){
  5.  
  6. $(this).attr("data-oral", $(this).val().replace(/\ +/g,""));
  7. //$("#bankCard").attr("data-oral")获取未格式化的卡号
  8.  
  9. var self = $.trim(e.target.value);
  10. var temp = this.value.replace(/\D/g, '').replace(/(....)(?=.)/g, '$1 ');
  11. if(self.length > 22){
  12. this.value = self.substr(0, 22);
  13. return this.value;
  14. }
  15. if(temp != this.value){
  16. this.value = temp;
  17. }
  18. }

这里用“keyup”事件处理格式化,每4位数一组中间空格隔开。但是数据格式化以后又不利于计算,所以给当前元素添加一个属性“data-oral”,保存未处理的数字,这样计算或者要传递到后台可以获取“data-oral”的值。

金额格式化
金额格式化和银行卡号格式化类似,但又有点不同,因为金额每3位数一组用逗号隔开,一般最后有小数点且保留两位有效数字。这里我开始用到“keyup”和"change"事件,但是IE浏览器对于change事件存在兼容问题,可以改用focus和blur事件代替

类似给元素添加属性“data-oral”保存未格式化的数字。

  1. /*
  2. * 金额每3位数一组逗号隔开格式化
  3. * 1.先把非数字的都替换掉
  4. * 2.由于IE浏览器对于change事件存在兼容问题,改用focus和blur事件代替。
  5. * */
  6. $("#moneyNum").on("keyup", formatMN);
  7.  
  8. $("#moneyNum").on({
  9. focus: function(){
  10. $(this).attr("data-fmt",$(this).val()); //将当前值存入自定义属性
  11. },
  12. blur: function(){
  13. var oldVal=$(this).attr("data-fmt"); //获取原值
  14. var newVal=$(this).val(); //获取当前值
  15. if (oldVal!=newVal) {
  16. if(newVal == "" || isNaN(newVal)){
  17. this.value = "";
  18. return this.value;
  19. }
  20. var s = this.value;
  21. var temp;
  22.  
  23. if(/.+(\..*\.|\-).*/.test(s)){
  24. return;
  25. }
  26. s = parseFloat((s + "").replace(/[^\d\.\-]/g, "")).toFixed(2) + "";
  27. var l = s.split(".")[0].split("").reverse(),
  28. r = s.split(".")[1];
  29. t = "";
  30. for(i = 0; i < l.length; i ++ ) {
  31. t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length && (l[i+1]!='-')? "," : "");
  32. }
  33. temp = t.split("").reverse().join("") + "." + r;
  34. this.value = temp;
  35. return this.value;
  36. }
  37. }
  38. });
  39.  
  40. function formatMN(e){
  41. this.value = this.value.replace(/[^\d\.\-]/g,"");
  42. $(this).attr("data-oral", parseFloat(e.target.value.replace(/[^\d\.-]/g, "")));
  43. //$("#moneyNum").attr("data-oral")获取未格式化的金额
  44. }

js格式化输入框内金额、银行卡号[转]的更多相关文章

  1. js格式化数字,金额按千位逗号分隔,负号用括号

    // 返回数字 function removeFormatMoney(s) { s = s.toString().replace("(","-").replac ...

  2. js格式化数字和金额

    格式化数字,格式化金额: function number_format(number, decimals, dec_point, thousands_sep) { /* * 参数说明: * numbe ...

  3. vue js格式化数字为金额格式

    /** * @description 格式化金额 * @param number:要格式化的数字 * @param decimals:保留几位小数 默认0位 * @param decPoint:小数点 ...

  4. js格式化数字为金额

    /** * * @param num * @param precision * @param separator * @returns {*} *=========================== ...

  5. js正则实现用户输入银行卡号的控制及格式化

    //js正则实现用户输入银行卡号的控制及格式化 <script language="javascript" type="text/javascript"& ...

  6. JS格式化数字金额用逗号隔开保留两位小数

    JS格式化金额,正则方式修改. /** * 格式化金额 * @param {[type]} v [要转换的数字] * @param {[type]} len [小数点位数,默认2位] * @param ...

  7. js 格式化数字,格式化金额:

    js 格式化数字,格式化金额: function number_format(number, decimals, dec_point, thousands_sep) { /* * 参数说明: * nu ...

  8. js格式化数字 金额按千位逗号分隔

    // 返回数字 function removeFormatMoney(s) { return parseFloat(s.replace(/[^\d\.-]/g, "")); } / ...

  9. JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去…

    JavaScript 格式化数字.金额.千分位.保留几位小数.舍入舍去… 类库推荐 1. Numeral.js 一个用于格式化和操作数字的JavaScript库.数字可以被格式化为货币,百分比,时间, ...

随机推荐

  1. asp.net 二级域名表单认证情况下共享Cookie

    二级域名之间共享Cookie,很重要的一点就是配置,如下: domain设置为.ahdqxx.com,如果你的域名是www.ahdqxx.com,mall.ahdqxx.com,那么请设置你的doma ...

  2. Could not get JDBC connection

    想学习下JavaWeb,手头有2017年有活动的时候买的一本书,还是全彩的,应该很适合我这种菜鸟技术渣. 只可惜照着书搭建了一套Web环境,代码和db脚本都是拷贝的光盘里的,也反复检查了数据库的连接情 ...

  3. 使用virtualenv进行python环境隔离

    按照以下步骤安装 TensorFlow: 1.打开终端(一个 shell),你将在这个终端中执行随后的步骤 2.通过以下命令安装 pip 和 virtualenv sudo easy_install ...

  4. 设置dataGridView单元格颜色、字体、ToolTip、字体颜色

    this.dataGridView3.Rows[e.RowIndex].Cells["你的那个要判断的列名"].Style.BackColor = Color.MediumPurp ...

  5. CSS效果:这里有你想要的CSS3漂亮的自定义Checkbox各种复选框

    在原来有一篇文章写到了<CSS效果篇--纯CSS+HTML实现checkbox的思路与实例>. 今天这篇文章主要写各种自定义的checkbox复选框,实现如图所示的复选框: 大致的html ...

  6. 利用Fiddler修改请求信息通过Web API执行Dynamics 365操作(Action)实例

    本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复261或者20170724可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me ...

  7. Xcode常用的文件路径

    1.Provisioning Profile文件在哪找? ~/Library/MobileDevice/Provisioning Profiles 2.master 在那找? ~/.cocoapods

  8. MySql数据库实现分布式的主从结构

    最近学习了关于使用MySql数据的实现主动结构的原理,在以前的并发访问低的场景一下,一般一台性能高的服务器作为一个MySql数据,就可以满足业务的增删改查场景,但是随着网络用户的增加 当出现高并发,高 ...

  9. 唯一索引的一种使用情景【有则U无则I】

    这个知识点是最近一位面试老师问我的,当时对这种方法不了解,所以只能说那个中效率低的方法了,也就是先进性select判断,然后在执行更新或者插入操作,显然这种是很麻烦的,也自我反思一下,确实有很多的知识 ...

  10. wap2app(二)-- 设置APP系统状态栏

    准备 工具:HBuilder 一.全屏设置,不显示系统状态栏 这里所说的系统状态栏就是包括了:信号.运营商.电量等信息手机屏幕最顶部信息. 全屏并非状态栏透明或变色,而是没有状态栏,也就是看不见电量. ...