2019-05-05
在日常工作中,记录下自己的经验之谈---
function formatMoney(el) { //input输入框金额输入小数点限制,格式化,获取和失去焦点金额是否格式化(封装方法)
$(el).keyup(function() {
clearNoNum(this)
})
function clearNoNum(obj) {
obj.value = obj.value.replace(/[^\d.]/g, ""); //清除“数字”和“.”以外的字符
obj.value = obj.value.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的
obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); //只能输入两个小数
if(obj.value.indexOf(".") < 0 && obj.value != "") { //以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
obj.value = parseFloat(obj.value);
}
}
var val;
$(el).focus(function() {
$(this).val(val)
})
$(el).blur(function() {
val = $(this).val();
$(this).val(cc($(this).val()))
})
function cc(s) {
if(/[^0-9\.]/.test(s)) return "invalid value";
s = s.replace(/^(\d*)$/, "$1.");
s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1");
s = s.replace(".", ",");
var re = /(\d)(\d{3},)/;
while(re.test(s))
s = s.replace(re, "$1,$2");
s = s.replace(/,(\d\d)$/, ".$1");
return "" + s.replace(/^\./, "0.")
}
}