描述,输123 =》123.00
54456.22=》54,456.22
及时显示。。
填完数字之后 在外面点一下
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<!--填完数字之后 在外面点一下 -->
<!--onchange 事件在失焦之后出发-->
<input type="text" id="money" onchange="formatMoney(this)">
<script>
// element为 input dom元素,digits为小数位数,默认不传为2
function formatMoney(element, digits) {
var money = element.value;
digits = digits > 0 && digits <= 20 ? digits : 2;
money = parseFloat((money + "").replace(/[^\d\.-]/g, "")).toFixed(digits) + "";
var l = money.split(".")[0].split("").reverse(),
r = money.split(".")[1];
t = "";
for (i = 0; i < l.length; i++) {
t += l[i] + ((i + 1) % 3 === 0 && (i + 1) !== l.length ? "," : "");
}
element.value = t.split("").reverse().join("") + "." + r;
}
</script>
</body>
</html>
555555555555555555555555555555111111111111111111hgggggggggggggg
dateformat()
请原谅,我就是赚点积分下载其他东西。对不起
失去焦点时格式化吗= = ,总不可能一边输入一边格式化吧
思路最重要,判断“.”后面的长度,有的2位以上,就取两位,没有补齐两位,接着,判断“.”前面的,重“.”开始,3位又一个逗号隔开。就这样
<script>
function formatter(o) {
var arr = o.value.split('.'), nl = arr[0].length;
var tmp = arr[0].replace(/(\d{3}(?!,))/g, '$1,').replace(/,$/g, '')
var ss = o.selectionStart + tmp.length - arr[0].length;
console.log(ss)
o.value = tmp + '.' + (arr[1] || '00').substring(0,2);
o.selectionStart=o.selectionEnd=ss
}
</script>
<input type="text" onkeypress="ss = this.selectionStart" oninput="formatter(this)" onpropertychange="formatter(this)" style="width:100%" />
百度上有很多封装的,可以去看看
在input 中的keyup事件中调用以下方法
var changeFormat = function(money){
//传入money格式校验自己做
var temp = [];
var arr = money.toString().split(".");
var count = -1;
for(var i = arr[0].length; i >= 0; i--){
temp.push(arr[0][i]);
count = count + 1;
//调整添加,的位置
if(count%3 == 0 && count != 0 && i != 0){
temp.push(",");
}
}
//翻转拼接
var stringFomat = temp.reverse().join("") + (arr[1] ? ("." + arr[1]) : ".00");
return stringFomat;
}
使用changeFormat(1232.32)
这样调用就能返回 1,232.32了
网上好多写法的
function fmoney(s, n)
{
n = n > 0 && n <= 20 ? n : 2;
s = parseFloat((s + "").replace(/[^\d.-]/g, "")).toFixed(n) + "";
var l = s.split(".")[0].split("").reverse(),
r = s.split(".")[1];
t = "";
for(i = 0; i < l.length; i ++ )
{
t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
}
return t.split("").reverse().join("") + "." + r;
}
fmoney(100, 2)
//"100.00"
使用input框的@input监听事件(事件随意, onblur失焦事件都可以) 例如:
html:
method:
inputMethod () {
$('.inputDemo').val() = parseFloat($('.inputDemo').val()).toFixed(2)
}
使用input框的@input监听事件(事件随意, onblur失焦事件都可以) 例如:
html:
method:
inputMethod () {
$('.inputDemo').val() = parseFloat($('.inputDemo').val()).toFixed(2)
}
在失去焦点后,parseFloat(num,2)
楼主对该输入框添加change事件,语句块中写判断,改变该输入框值即可