数字转带千分位的字符串

思路

  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. 后端数据推送-EventSource

    服务器发送事件(以下简称SSE)是HTML 5规范的一个组成部分,可以实现服务器到客户端的单向数据通信.通过SSE,客户端可以自动获取数据更新,而不用重复发送HTTP请求.一旦连接建立,“事件”便会自 ...

  2. Linux.中断处理.入口x86平台entry_32.S

    Linux.中断处理.入口x86平台entry_32.S Linux.中断处理.入口x86平台entry_32.S 在保护模式下处理器是通过中断号和IDTR找到中断处理程序的入口地址的.IDTR存的是 ...

  3. 34.Merge Intervals(合并序列)

    Level:   Medium 题目描述: Given a collection of intervals, merge all overlapping intervals. Example 1: I ...

  4. cookie,seesion学习

    一,为什么需要cookie和session? 1,Web应用程序是使用HTTP协议传输数据的.然而HTTP协议是无状态的协议.一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的 ...

  5. SourceTree 这是一个无效源路径/URL的 解决方法

    看网上的教程都解决不了,这是一个大坑,折腾了很久. 如果说你的项目存在,而不是url真的无效,那就是因为你的权限问题. 因为你的sourcetree登过其他账号,在sourceTree设置里面记录了他 ...

  6. docker 安装cat

    1.下载cat cat 地址:https://github.com/dianping/cat 进入opt 创建cat文件夹 cd /opt/ mkdir cat cd cat 下载cat git cl ...

  7. 【虚拟机】:"该虚拟机似乎正在使用中。 如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消(C)”按钮以防损坏。"

    1.可能是由于上次使用虚拟机,没有正常关闭出现了这种情况,于是把问题复制粘贴搜了一下. 2.出现了如下可行的解决方法:把后缀名为.vmdk.lck的都删除掉. 3.然后再打开虚拟机就可以了.

  8. 【QT学习】数独游戏

    前几天刷leetcode刷到一题,讲sudokuSolver,写完感觉很有意思,遂想做一个数独游戏,百度了一下如何自动生成题库,参考某位大神安卓下的实现思路,自己做了一套文字版的数独游戏,后来想乘机会 ...

  9. JavaScript仿淘宝实现放大镜效果的实例

    我们都知道放大镜效果一般都是用于一些商城中的,列如每当我们打开淘宝,天猫等pc端时,看到心仪的物品时,点击图片时,便呈现出放大镜的效果.在没有去理解分析它的原理时,感觉非常的神奇,当真正地去接触,也是 ...

  10. static 关键字详解(用途、误区、面试题)

    static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列 ...