您好,欢迎访问一九零五行业门户网

asp.net+js实现金额格式化_javascript技巧

根据用户需求,在输入金额时要格式化,即每三位数字加逗号分隔,并保留两位小数。
考虑到用户的体验,随使用js对金额进行格式化,前台代码如下:
复制代码 代码如下:
js代码如下:
复制代码 代码如下:
//======检查输入的是否为数字
function check() {
    if (!((window.event.keycode >= 48 && window.event.keycode         window.event.keycode = 0
    }
}
//======格式化文本框的金额
function run(obj) {
    var objvalue = obj.value.replace(/[,]/g, ),
        objlength = objvalue.length,
        dtmp = objvalue.indexof(.),
        neg = objvalue.indexof(-);
    var inttmp = 0,
        floattmp = -1;
    if (dtmp != -1) {
        inttmp = dtmp == 0 ? 0 : new string(objvalue).substring(0, dtmp);
        floattmp = new string(objvalue).substring(dtmp + 1, objlength + 1);
        floattmp = floattmp.replace(/[^0-9]/g, );
    }
    else {
        inttmp = objvalue;
    }
    if (neg == 0) {
        inttmp = inttmp.replace(/[-]/g, );
    }
    inttmp = inttmp.replace(/[^0-9]/g, );
    var tmp = , str = 0000;
    for (; inttmp.length > 3; ) {
        var temp = new string(inttmp / 1000);
        if (temp.indexof(.) == -1) {
            tmp = ,000 + tmp;
            inttmp = temp;
        }
        else {
            var le = new string(temp).split(.)[1].length;
            tmp = , + new string(temp).split(.)[1] + str.substring(0, 3 - le) + tmp;
            inttmp = new string(temp).split(.)[0];
        }
    }
    inttmp = inttmp + tmp;
    obj.value = neg == 0 ? - + inttmp + runing(floattmp) : inttmp + runing(floattmp);
}
//======整理小数部分
function runing(val) {
    if (val != -1 && val != ) {
        var valvalue = 0 + . + val;
        if (val.length >= 2) {
            valvalue = parsefloat(valvalue).tofixed(2);
        }
        var temp = . + valvalue.split(.)[1];
        return temp;
    }
    else if (val != 0 && val == ) {
        return .;
    }
    else {
        return ;
    }
}
同时因为金额可输入负数,所以加上“neg = objvalue.indexof(-)”的判断。
关于金额的格式化问题,经常遇到这种事情,觉得这个还可以,也就留着,以供以后查阅方便!
其它类似信息

推荐信息