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

根据用户需求,在输入金额时要格式化,即每三位数字加逗号分隔,并保留两位小数。

考虑到用户的体验,随使用JS对金额进行格式化,前台代码如下:

代码如下:

<asp:TextBox ID="txtAmount" runat="server" onkeypress="check()" onkeyup="run(this)"></asp:TextBox>

JS代码如下:

代码如下:

//======检查输入的是否为数字
function check() {
    if (!((window.event.keyCode >= 48 && window.event.keyCode <= 57) || window.event.keyCode == 46 || window.event.keyCode == 45)) {
        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("-")”的判断。

关于金额的格式化问题,经常遇到这种事情,觉得这个还可以,也就留着,以供以后查阅方便!

(0)

相关推荐

  • JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="

  • JS格式化数字金额用逗号隔开保留两位小数

    例如: 12345格式化为12,345.00 12345.6格式化为12,345.60 12345.67格式化为 12,345.67 只留两位小数. 回来后写了个格式化函数.可以控制小数位数,自动四舍五入. 代码如下: 复制代码 代码如下: function fmoney(s, n) { n = n > 0 && n <= 20 ? n : 2; s = parseFloat((s + "").replace(/[^\d\.-]/g, ""

  • Angular.js 实现数字转换汉字实例代码

    AngularJS 简介 AngularJS 是一个 JavaScript 框架.它可通过 <script> 标签添加到 HTML 页面. AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML. 下面通过本文给大家介绍Angular.js 实现数字转换汉字实例代码,具体代码如下所示: // 1.实现输入数字输出对应汉字,要求使用angularjs,不准使用$watch函数,for循环:提示:ng-change指令 <div ng-app="my

  • javascript设置金额样式转换保留两位小数示例代码

    复制代码 代码如下: //金额格式转换 function parsePrice(s) { var n = 2 //设置保留的小数位数 s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + ""; var l = s.split(".")[0].split("").reverse(); var r = s.split(".&qu

  • JS实现将数字金额转换为大写人民币汉字的方法

    本文实例讲述了JS实现将数字金额转换为大写人民币汉字的方法.分享给大家供大家参考,具体如下: //代码如下所示: function convertCurrency(money) { //汉字的数字 var cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'); //基本单位 var cnIntRadice = new Array('', '拾', '佰', '仟'); //对应整数部分扩展单位 var cnInt

  • js整数字符串转换为金额类型数据(示例代码)

    复制代码 代码如下: function zhen(str) {      var arr_1 = ["", "\u62fe", "\u4f70", "\u4edf", "\u4e07", "\u4ebf"], arr_2 = ["", "\u4e07", "\u4ebf"];      var maskstr = arr_1.s

  • js实现人民币大写金额形式转换

    本文实例为大家分享了js实现金额转大写的相关代码,供大家参考,具体内容如下 function convertCurrency(num) { //转成人民币大写金额形式 var str1 = '零壹贰叁肆伍陆柒捌玖'; //0-9所对应的汉字 var str2 = '万仟佰拾亿仟佰拾万仟佰拾元角分'; //数字位所对应的汉字 var str3; //从原num值中取出的值 var str4; //数字的字符串形式 var str5 = ''; //人民币大写金额形式 var i; //循环变量 v

  • javascript将数字转换整数金额大写的方法

    本文实例讲述了javascript将数字转换整数金额大写的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: function digit_uppercase(n) { var digit = [ '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' ]; var unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟'] ]; var s = ''; for (var i = 0; i < unit[

  • js格式化金额可选是否带千分位以及保留精度

    js格式化金额,可选是否带千分位,可选保留精度,也是网上搜到的,但是使用没问题 复制代码 代码如下: /* 将数值四舍五入后格式化. @param num 数值(Number或者String) @param cent 要保留的小数位(Number) @param isThousand 是否需要千分位 0:不需要,1:需要(数值类型); @return 格式的字符串,如'1,234,567.45' @type String */ function formatNumber(num,cent,isT

  • js 金额格式化来回转换示例

    直接看例子啦: 复制代码 代码如下: function fmoney(s, n) //s:传入的float数字 ,n:希望返回小数点几位 { n = n > 0 && n <= 20 ? n : 2; s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + ""; var l = s.split(".")[0].split(&qu

  • JS案例分享之金额小写转大写

    之前做项目的时候遇到需要在输入小写金额之后自动转成大写,经过一番研究,整出了如下代码,分享给大家,希望有所帮助 复制代码 代码如下: function Arabia_to_Chinese(Num){ for(i=Num.length-1;i>=0;i--) { Num = Num.replace(",","") Num = Num.replace(" ","") } Num = Num.replace("¥&q

随机推荐