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输入框会出现带颜色的外边框,如下图所示:
随机推荐
- 日志=>flume=>kafka=>spark streaming=>hbase
日志=>flume=>kafka=>spark streaming=>hbase 日志部分 #coding=UTF-8 import random import time ur ...
- go 学习之字符串
字符串 字符串是不可变值类型,内部⽤用指针指向 UTF-8 字节数组.默认值是空字符串 "".用索引号访问某字节,如 s[i], i不能是负数.不能⽤用序号获取字节元素指针,&am ...
- 在Ubuntu custom kernel上裝perf by compile
Using perf, the Linux Performance Analysis tool on Ubuntu Karmic A lot has been going on with Linux ...
- 想要成长,总得立个flag
国庆假期结束了,自己的成长却丝毫没有,所以啊,立个flag试试看,每天能发表一个小知识点,希望自己能够做到,加油
- JS匿名包装器(自执行匿名函数)
一.获得循环序号 for(var i = 0; i < 10; i++) { (function(e) { setTimeout(function() { console.log(e); }, ...
- H5 移动调试全攻略
H5 移动调试全攻略 随着移动设备的高速发展,H5 开发也成为了 F2E 不可或缺的能力.而移动开发的重中之重就是掌握调试技巧,定 Bug于无形. 一.概要 因为移动端操作系统分为 iOS 和 And ...
- 如何给 List 集合排序
一,List<Integer>的排序示例代码:List<Integer> list = new ArrayList<Integer>();list.add(6);l ...
- shell 逐行比较两个文件的内容是否一样(行数相同)
file1="1.txt" file2="2.txt" lines=`cat $file1 | wc -l` ;i<=$lines;i++)) do li ...
- shell 判断字符串是否包含另一个字符串
1.使用grep s1="abcdefg" s2="bcd" result=$(echo $s1 | grep "${s2}") if [[ ...
- python--表达式形式的yield、面向过程编程、内置函数
yield的表达式形式 def init(func): def wrapper(*args, **kwargs): g = func(*args, **kwargs) next(g) return g ...