[js]输入框数字三位加逗号,数字金额变汉字金额

在这里插入图片描述

 $('#property_price').keyup(function () {
    
    
    var a = $(this).val();
    $(".price_chinese").text(convertToChinese(a.replace(/,/g, "")))
    var b = TripartiteMethod(a);
    $(this).val(b);
  })
// 三位加,号
function TripartiteMethod(num) {
    
    
    var type = true;
    var value = '';
    //去除逗号字符
    num = num.replace(/,/g, "");
    //判断是否有小数点
    if (num.indexOf(".") < 0) {
    
    
        var t1 = num.toString().split('');
    } else {
    
    
        type = false;
        var arr = num.toString().split('.');
        var t1 = arr[0].toString().split('');
        var t2 = arr[1].toString();
    }
    //添加逗号字符
    var result = [], counter = 0;
    for (var i = t1.length - 1; i >= 0; i--) {
    
    
        counter++;
        result.unshift(t1[i]);
        if ((counter % 3) == 0 && i != 0) {
    
    
            result.unshift(',');
        }
    }
    //判断显示类型是否有小数
    if (type === true) {
    
    
        value = result.join('');
    } else {
    
    
        value = result.join('') + '.' + t2;
    }
    return value;
  }
  
  
    function convertToChinese(money) {
    
    
      var cnNums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //汉字的数字
      var cnIntRadice = new Array("", "拾", "佰", "仟"); //基本单位
      var cnIntUnits = new Array("", "万", "亿", "兆"); //对应整数部分扩展单位
      var cnDecUnits = new Array("角", "分", "毫", "厘"); //对应小数部分单位
      var cnInteger = "整"; //整数金额时后面跟的字符
      var cnIntLast = "元"; //整型完以后的单位
      var maxNum = 999999999999999.9999; //最大处理的数字

      var IntegerNum; //金额整数部分
      var DecimalNum; //金额小数部分
      var ChineseStr = ""; //输出的中文金额字符串
      var parts; //分离金额后用的数组,预定义

      if (money == "") {
    
    
        return "";
      }

      money = parseFloat(money);
      //alert(money);
      if (money >= maxNum) {
    
    
        $.alert('超出最大处理数字');
        return "";
      }
      if (money == 0) {
    
    
        ChineseStr = cnNums[0] + cnIntLast + cnInteger;
        //document.getElementById("show").value=ChineseStr;
        return ChineseStr;
      }
      money = money.toString(); //转换为字符串
      if (money.indexOf(".") == -1) {
    
    
        IntegerNum = money;
        DecimalNum = '';
      } else {
    
    
        parts = money.split(".");
        IntegerNum = parts[0];
        DecimalNum = parts[1].substr(0, 4);
      }
      if (parseInt(IntegerNum, 10) > 0) {
    
     //获取整型部分转换
        zeroCount = 0;
        IntLen = IntegerNum.length;
        for (i = 0; i < IntLen; i++) {
    
    
          n = IntegerNum.substr(i, 1);
          p = IntLen - i - 1;
          q = p / 4;
          m = p % 4;
          if (n == "0") {
    
    
            zeroCount++;
          } else {
    
    
            if (zeroCount > 0) {
    
    
              ChineseStr += cnNums[0];
            }
            zeroCount = 0; //归零
            ChineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
          }
          if (m == 0 && zeroCount < 4) {
    
    
            ChineseStr += cnIntUnits[q];
          }
        }
        ChineseStr += cnIntLast;
        //整型部分处理完毕
      }
      if (DecimalNum != '') {
    
     //小数部分
        decLen = DecimalNum.length;
        for (i = 0; i < decLen; i++) {
    
    
          n = DecimalNum.substr(i, 1);
          if (n != '0') {
    
    
            ChineseStr += cnNums[Number(n)] + cnDecUnits[i];
          }
        }
      }
      if (ChineseStr == '') {
    
    
        ChineseStr += cnNums[0] + cnIntLast + cnInteger;
      } else if (DecimalNum == '') {
    
    
        ChineseStr += cnInteger;
      }
      return ChineseStr;

    }

Guess you like

Origin blog.csdn.net/qq_41037744/article/details/121393931