input输入框数字转带千分位的字符串
数字转带千分位的字符串
思路
- 先获取要转换的数字,对其进行分割
- 小数部分具体需要保留多少位,具体处理
- 整数部分用正则做替换
- 将小数部分和整数部分合计
代码
注意: 本文是基于 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输入框数字转带千分位的字符串的更多相关文章
- [js开源组件开发]数字或金额千分位格式化组件
数字或金额千分位格式化组件 这次距离上一个组件<[js开源组件开发]table表格组件>时隔了一个月,由于最近的项目比较坑,刚挖完坑,所以来总结性提出来几个组件弥补这次的空缺,首先是金额和 ...
- input框输入金额显示千分位
比如输入:1000000,则显示为1,000,000(或者是保留3位小数:1,000,000.000) 知识点: 1)JavaScript parseFloat() 函数: 定义:parseFloat ...
- 移动端 input 输入框实现自带键盘“搜索“功能并修改X
主要利用html5的,input[type=search]属性来实现,此时input和type=text外观和功能没啥区别: html代码入下: <form action="" ...
- input输入框数字验证
正则限制input只能输入大于零的数字:onkeyup="this.value=this.value.replace(/\D|^0/g,'')" onafterpaste=&quo ...
- js数字格式化为千分位
方法1: 浏览器自带的一个方法 const num=12345.6789 num.toLocaleString();=>"12,345.679" 方法2: 正则匹配 func ...
- 手机浏览器 input 输入框 数字
其实很简单了啦 type="tel"就行了呢 如果是type="number"其实不好用
- 请实现一个js脚本,要求做到将数字转化为千分位表示如:1234567转化为1,234,567
//法一 function parseNum(num){ var list = new String(num).split('').reverse(); for(var i = 0; i < l ...
- Grid数字或金额千分位或保留两位小数
formatter: 'number', formatoptions: { thousandsSeparator: "", decimalPlaces: 2 }
- (谷歌浏览器等)解决css中点击input输入框时出现外边框方法【outline:medium;】
问题:在使用谷歌浏览器,360浏览器时,点击input输入框会出现带颜色的外边框,如下图所示:
随机推荐
- 分布式ID的雪花算法及坑
分布式ID生成是目前系统的常见刚需,其中以Twitter的雪花算法(Snowflake)比较知名,有Java等各种语言的版本及各种改进版本,能生成满足分布式ID,返回ID为Long长整数 但是这里有一 ...
- DB2临时表空间的作用
临时表空间分为系统临时表空间和用户临时表空间 系统临时表空间用来存储各种数据操作(排序.重组表.创建索引.连接表)中所需的内部临时数据,虽然可以创建任意多个系统临时表空间,但建议用户只使用大多数表所使 ...
- js中的相等与逗号运算符用法
/** * 相等运算符 '==',相等则返回true,不等则返回false * - 用 '==' 来比较两个值时,若值的类型不同,则会自动进行类型 * 转换,将其转换为相同的类型然后再进行比较. */ ...
- 本地存储(sessionStrorage,localStorage)
1.本地存储特性 1. 数据存储在用户浏览器中 2. 设置,读取方便,设置页面刷新不丢失数据 3. 容量较大,sessionStorage约5M,localStorage约20M 4. 只能存储字符串 ...
- 【串线篇】MVC与SpringMVC
1.二者区分 MVC: SpringMvc: DispatcherServlet(前端控制器名) 2.springmvc思想 Spring MVC 通过一套 MVC 注解,让 POJO成为处理请求的控 ...
- python reduce()函数使用
reduce()的使用方法形如reduce(function, iterable[, initializer]),它的形式和map()函数一样.不过参数f(x)必须有两个参数,initializer是 ...
- 53、tensorflow基本操作
import tensorflow as tf import numpy as np x_data = np.float32(np.random.rand(2,100)) print(x_data) ...
- Dubbo入门到精通学习笔记(十八):使用Redis3.0集群实现Tomcat集群的Session共享
文章目录 1.单节点访问http://192.168.1.61:8082/pay-web-boss/: 2.增加多一个消费者节点:192.168.1.62,以同样的方式部署pay-web-boss工程 ...
- 模板引擎的简单原理template
var templateStr = "我的名字叫<%=name%>我是一只小狗,今年<%=age%>岁."; var data = { name:'旺财 ...
- 2019牛客多校第七场C-Governing sand(线段树+枚举)
Governing sand 题目传送门 解题思路 枚举每一种高度作为最大高度,则需要的最小花费的钱是:砍掉所有比这个高度高的树的所有花费+砍掉比这个高度低的树里最便宜的m棵树的花费,m为高度低的里面 ...