数字转带千分位的字符串

思路

  1. 先获取要转换的数字,对其进行分割
  2. 小数部分具体需要保留多少位,具体处理
  3. 整数部分用正则做替换
  4. 将小数部分和整数部分合计

代码

注意: 本文是基于 jQuery 写的,稍稍改改就可以成为原生的

在 String 原型链上增加以下方法

/**
* 将含有千分位符的数字字符串切成不含千分位符的字符数按
* @param {String} str 传入含有 千分位符的 字符串
*/
String.prototype.thousandsToNumber = function (str) {
return str.split(",").join("");
} /**
* 目标失去焦点保留小数并转为含有千分位符的字符串
* @param {Number} num 保留的小数位数 默认保留2位小数
*/
String.prototype.numToStr = function (num) { if (this.length == ) return num = num ? num :
var val = this.thousandsToNumber(this.toString())
var IntegerPat, decimalPat
decimalPat = '.' + parseFloat(val).toFixed(num).split('.')[]
IntegerPat = this.dealIntegerPat(val) return IntegerPat + decimalPat
} /**
* 将字符串转为含有千分位符的数字
*/
String.prototype.numToChange = function () { var val = this.thousandsToNumber(this.toString())
var IntegerPat, decimalPat
decimalPat = val.indexOf('.') != - ? '.' + val.split('.')[] : ''
IntegerPat = this.dealIntegerPat(val) return IntegerPat + decimalPat
} /**
* 将传入的数字型字符串 转换成 保留整数部分 并且含有 千分位符的字符串
* @param {String} ret 传入字符串
*/
String.prototype.dealIntegerPat = function (ret) {
return (ret.indexOf('.') != - ? ret.split('.')[] : ret).replace(/(\d{,})(?=(\d{})+(?:$|\.))/g, '$1,')
}

调用

// 全局变量,用来存储 input 再更改之前的值
var targeSeleStat, oldVal; /**
* 将闯入的含有千分位的数字转为保留多少位的小数的千分位值 失去焦点触发
* @param {String} val 传入的值
* @param {Element} ele 传入的this
* @param {Number} num 小数位数
*/
function numToStr(val, ele, num) {
$(ele).val(val.numToStr(num))
} $("#input")
.on("input propertychange", function (e) { var val = $(this).val()
var setLastSele = e.target.selectionEnd
var leveEnd = oldVal.length - targeSeleStat
var val = val.numToChange() $(this).val('').focus().val(val) if (val.length != setLastSele) {
e.target.selectionStart = e.target.selectionEnd = val.length - leveEnd
}
})
.blur(function (e) {
targeSeleStat =
})
.click(function (e) {
targeSeleStat = e.target.selectionStart
oldVal = $(this).val()
})

HTML 代码

<input id='input' type="text" onblur="numToStr(this.value, this, 5)">

效果

input输入框数字转带千分位的字符串的更多相关文章

  1. [js开源组件开发]数字或金额千分位格式化组件

    数字或金额千分位格式化组件 这次距离上一个组件<[js开源组件开发]table表格组件>时隔了一个月,由于最近的项目比较坑,刚挖完坑,所以来总结性提出来几个组件弥补这次的空缺,首先是金额和 ...

  2. input框输入金额显示千分位

    比如输入:1000000,则显示为1,000,000(或者是保留3位小数:1,000,000.000) 知识点: 1)JavaScript parseFloat() 函数: 定义:parseFloat ...

  3. 移动端 input 输入框实现自带键盘“搜索“功能并修改X

    主要利用html5的,input[type=search]属性来实现,此时input和type=text外观和功能没啥区别: html代码入下: <form action="" ...

  4. input输入框数字验证

    正则限制input只能输入大于零的数字:onkeyup="this.value=this.value.replace(/\D|^0/g,'')" onafterpaste=&quo ...

  5. js数字格式化为千分位

    方法1: 浏览器自带的一个方法 const num=12345.6789 num.toLocaleString();=>"12,345.679" 方法2: 正则匹配 func ...

  6. 手机浏览器 input 输入框 数字

    其实很简单了啦 type="tel"就行了呢 如果是type="number"其实不好用

  7. 请实现一个js脚本,要求做到将数字转化为千分位表示如:1234567转化为1,234,567

    //法一 function parseNum(num){ var list = new String(num).split('').reverse(); for(var i = 0; i < l ...

  8. Grid数字或金额千分位或保留两位小数

    formatter: 'number', formatoptions: { thousandsSeparator: "", decimalPlaces: 2 }

  9. (谷歌浏览器等)解决css中点击input输入框时出现外边框方法【outline:medium;】

    问题:在使用谷歌浏览器,360浏览器时,点击input输入框会出现带颜色的外边框,如下图所示:

随机推荐

  1. UVALive 4728 Squares(旋转卡壳)

    Squares The famous Korean IT company  plans to make a digital map of the Earth with help of wireless ...

  2. 牛客网练习赛 2 烟花(概率dp)

    题目传送门 烟花 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K Special Judge, 64bit IO Format: %lld 题目 ...

  3. docker--container

    [root@localhost docker_test]# docker run bigni/test3 #运行 docker so easy ! [root@localhost docker_tes ...

  4. C#冒泡排序法学习

    一,冒泡排序法理解:就是将一个集合里的数据当前位置和后一位比较,然当前位置大于后一位,则两个位置替换,直到排序完成 using System; using System.Collections.Gen ...

  5. 如何判断一个List集合中是否有空值

    list.Any(v => string.IsNullOrWhiteSpace(v))

  6. hbase配置详解(转)

    转自:http://www.cnblogs.com/viviman/archive/2013/03/21/2973539.html 1 准备工作 因为我只有一台机器,所以,一切都成为了伪分布,但是,其 ...

  7. jquery submit事件

    jquery submit 事件 $('#form').submit(function(){ if(true){ //do return true; }else{ //do return false; ...

  8. NRF24L01学习

    一.工作模式 PWR_UP和PRIM_RX在寄存器0x00中的第0位和第1位. 待机模式I:只是使用晶振工作,CE=0时是拉低? 待机模式II:部分时钟缓冲器处在工作模式.TX FIFO为空并且CE为 ...

  9. 兼容新旧浏览器的flex写法

    拷贝直接加类名即可 /* 定义 */ .flex-def { display: -webkit-box; /* 老版本语法: Safari, iOS, Android browser, older W ...

  10. (转)Maven中的库(repository)详解 ---repository配置查找构件(如.jar)的远程库

    转:https://blog.csdn.net/taiyangdao/article/details/52287856 Maven中的库(repository)是构件(artifact)的集合.构件以 ...