input框,金额的输入框增加自动格式化功能,求封装的代码??

描述,输123 =》123.00
54456.22=》54,456.22
及时显示。。

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.") }

填完数字之后 在外面点一下

 <!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位又一个逗号隔开。就这样

javascript自动格式化金额,可包含小数

 <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事件,语句块中写判断,改变该输入框值即可