概述
最近项目中有这样的需求,需要封装成公用方法 这里就把转换千分位的方法发出来记录下
formatMoney:function(s, n)
{
n = n > 0 && n <= 20 ? n : 2;
s = (s + "").replace(/,/g, '');
if(s === "" || isNaN(s)){
return "";
}
s = parseFloat((s + "").replace(/[^d.-]/g, "")).toFixed(n) + "";
var l = s.split(".")[0].split("").reverse(),
r = s.split(".")[1],
t = "";
for(let i = 0; i < l.length; i ++ )
{
t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
}
return t.split("").reverse().join("") + "." + r;
},
options属性保存
//实际有很多属性 这里简化一下
options = {
fmoney: false,//是否千分位显示
fmoneyFixed: 2,//千分位保留位数
}
给input绑定方法:
bindDataEvent: function (_this) {
var id = "#" + _this.ele.attr("id");
$(id).on("focus", "input",
function () {
//获取input元素上的fmoney属性
var fmoney = $(this).attr("fmoney");
if(fmoney === "true"){
var oldMny = this.value.replace(/,/g, '');
if(oldMny.indexOf(".")>0){
oldMny = oldMny.replace(/0+?$/,"");//去除尾部多余的0
oldMny = oldMny.replace(/[.]$/,"");//如果最后一位是.则去掉
}
this.value = oldMny;
}
});
//失去焦点保存成千分位
$(id).on("blur", "input",
function () {
var fmoney = $(this).attr("fmoney");
if(fmoney === "true"){
var n = _this.options.fmoneyFixed ? Number(_this.options.fmoneyFixed) : 2;
var value = fmoney ? _this.formatMoney($(this).val(),n): $(this).val();
$(this).val(value);
}
});
//输入状态时 根据fmoneyFixed属性设置input小数点后面的位数,默认为两位
$(id).on('keyup', "input",
function () {
var fmoney = $(this).attr("fmoney");
if(fmoney === "true"){
var oldMny = this.value.replace(/,/g, '');
var n = _this.options.fmoneyFixed ? Number(_this.options.fmoneyFixed) : 2;
//下面这个str拼接的正则可以保留小数点后n位
var str ='^(\-)*(\d+).(\d{0,'+ n +'}).*$';
var reg = new RegExp(str);
if(oldMny.indexOf(".")>0 && Number(oldMny.toString().split(".")[1].length) > 2){
oldMny = oldMny.replace(/0+?$/,"");//去除尾部多余的0
oldMny = oldMny.replace(/[.]$/,"");//如果最后一位是.则去掉
oldMny = oldMny.replace(reg, '$1$2.$3');//保留小数点后n位
}
this.value = oldMny;
}
});
},
最后
以上就是优秀棒球为你收集整理的金额千分位显示的全部内容,希望文章能够帮你解决金额千分位显示所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复