代码简易,不累赘
网上找了一个,测试都有问题。 有漏洞

解决方案 »

  1.   

    jQuery.extend({
    toRMB: function(num) {
    var stmp = "";
    if (num === stmp)
    return;
    if (isNaN(num)) {
    alert("不是数字");
    } else {
    var ms = num.replace(/[^\\d\\.]/g, "").replace(/(\\.\\d{2}).+$/, "$1").replace(/^0+([1-9])/, "$1").replace(/^0+$/, "0");
    var ms = num;
    var txt = ms.split(".");
    while (/\\d{4}(,|$)/.test(txt[0]))
    txt[0] = txt[0].replace(/(\\d)(\\d{3}(,|$))/, "$1,$2");
    stmp = txt[0] + (txt.length > 1 ? "." + txt[1] : "");
    return number2num1(ms - 0);
    }
    function number2num1(strg) {
    var number = Math.round(strg * 100) / 100;
    number = number.toString(10).split(".");
    var a = number[0];
    if (a.length > 12) {
    return "数值超出范围!支持的最大数值为 999999999999.99";
    } else {
    var e = "零壹贰叁肆伍陆柒捌玖";
    var num1 = "";
    var len = a.length - 1;
    for (var i = 0; i <= len; i++)
    num1 += e.charAt(parseInt(a.charAt(i))) + [["圆", "万", "亿"][Math.floor((len - i) / 4)], "拾", "佰", "仟"][(len - i) % 4];
    if (number.length == 2 && number[1] != "") {
    var a = number[1];
    for (var i = 0; i < a.length; i++)
    num1 += e.charAt(parseInt(a.charAt(i))) + ["角", "分"][i];
    }
    num1 = num1.replace(/零佰|零拾|零仟|零角/g, "零");
    num1 = num1.replace(/零{2,}/g, "零");
    num1 = num1.replace(/零(?=圆|万|亿)/g, "");
    num1 = num1.replace(/亿万/, "亿");
    num1 = num1.replace(/^圆零?/, ""); if (num1 != "" && !/分$/.test(num1))
    num1 += "整";
    return num1;
    }
    } }
    });你可以适当调整一下
      

  2.   


       <script>
    //   function regInput(e,reg)
    //{
    //e=e||event;
    //var srcElem = e.srcElement||e.target;
    //var oSel = document.selection.createRange();
    //oSel = oSel.duplicate()
    //oSel.text = ""
    //var srcRange = srcElem.createTextRange()
    //oSel.setEndPoint("StartToStart", srcRange)
    //var num = oSel.text + String.fromCharCode(event.keyCode) + srcRange.text.substr(oSel.text.length);
    //event.returnvalue = reg.test(num);
    //}
    function chineseNumber(num)
    {
    if (isNaN(num) || num > Math.pow(10, 12)) 
    return "";
    var cn = "零壹贰叁肆伍陆柒捌玖"
    var unit = new Array("拾佰仟", "分角")
    var unit1= new Array("万亿", "")
    var numArray = num.toString().split(".")
    var start = new Array(numArray[0].length-1, 2)function toChinese(num, index)
    {
    var num = num.replace(/\d/g, function ($1)
    {
    return cn.charAt($1)+unit[index].charAt(start--%4 ? start%4 : -1)
    })
    return num
    }for (var i=0; i<numArray.length; i++)
    {
    var tmp = ""
    for (var j=0; j*4<numArray[i].length; j++)
    {
    var strIndex = numArray[i].length-(j+1)*4
    var str = numArray[i].substring(strIndex, strIndex+4)
    var start = i ? 2 : str.length-1
    var tmp1 = toChinese(str, i)
    tmp1 = tmp1.replace(/(零.)+/g, "零").replace(/零+$/, "")
    tmp1 = tmp1.replace(/^壹拾/, "拾")
    tmp = (tmp1+unit1[i].charAt(j-1)) + tmp
    }
    numArray[i] = tmp 
    }numArray[1] = numArray[1] ? numArray[1] : ""
    numArray[0] = numArray[0] ? numArray[0]+"圆" : numArray[0], numArray[1] = numArray[1].replace(/^零+/, "")
    numArray[1] = numArray[1].match(/分/) ? numArray[1] : numArray[1]+"整"
    return numArray[0]+numArray[1]
    }function aNumber(num)
    {
    var numArray = new Array()
    var unit = "亿万圆$"
    for (var i=0; i<unit.length; i++)
    {
    var re = eval("/"+ (numArray[i-1] ? unit.charAt(i-1) : "") +"(.*)"+unit.charAt(i)+"/")
    if (num.match(re))
    {
    numArray[i] = num.match(re)[1].replace(/^拾/, "壹拾")
    numArray[i] = numArray[i].replace(/[零壹贰叁肆伍陆柒捌玖]/g, function ($1)
    {
    return "零壹贰叁肆伍陆柒捌玖".indexOf($1)
    })
    numArray[i] = numArray[i].replace(/[分角拾佰仟]/g, function ($1)
    {
    return "*"+Math.pow(10, "分角 拾佰仟 ".indexOf($1)-2)+"+"
    }).replace(/^\*|\+$/g, "").replace(/整/, "0")
    numArray[i] = "(" + numArray[i] + ")*"+Math.ceil(Math.pow(10, (2-i)*4))
    }
    else numArray[i] = 0
    }
    return eval(numArray.join("+"))
    }
    </script>
    <!--onkeypress="regInput(event,/^\d{0,12} (\. \d{0,2})?$/)"-->
    <input id=up size=60 ><button onclick="lw.value = chineseNumber(up.value)">转为大写</button><br>
    <input id=lw size=60 value="壹仟壹佰壹拾壹圆整"><button onclick="up.value = aNumber(lw.value)">转为小写</button> 
      

  3.   

    <!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>
    <title>test</title>
    </head>
    <body>
    <input id="input" type="text" value="" />
    <span id="output"></span>
    <script>
    var numChineses = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];
    units = ['','十','百','千'],
    steps = ['','万','亿'];
    document.getElementById('input').onchange = function(){
    var val = this.value.replace(/\D+/g, '');
    this.value = val;
    var arr = val.split('').reverse();
    var str = '元';
    if(arr.length > 16){
    alert('面额太大');
    return;
    }
    for(var i in arr){
    if(i%4 !== 0){
    str = numChineses[parseInt(arr[i])] + units[i%4] + str;
    }else{
    var stepIndex = Math.floor(i/4);
    stepIndex = stepIndex > 2 ? (stepIndex - 2) : stepIndex;
    str = numChineses[parseInt(arr[i])] + steps[stepIndex] + str;
    }
    }
    document.getElementById('output').innerHTML = str;
    }
    </script>
    </body>
    </html>
      

  4.   

    <!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>
    <title>test</title>
    </head>
    <body>
    <input id="input" type="text" value="" />
    <div>
    <span>金额:</span>
    <span id="output"></span>
    </div>
    <script>
    function toRMB(amount){
    if(amount.length > 16){
    return '面额太大';
    }
    var numChineses = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];
    units = ['','十','百','千'],
    steps = ['圆','万','亿'],
    str = ' 整';
    var arr = amount.split('').reverse();
    for(var i in arr){
    if(i%4 !== 0){
    str = numChineses[parseInt(arr[i])] + units[i%4] + str;
    }else{
    var stepIndex = Math.floor(i/4);
    stepIndex = stepIndex > 2 ? (stepIndex - 2) : stepIndex;
    str = numChineses[parseInt(arr[i])] + steps[stepIndex] + str;
    }
    }
    return str;
    }

    var ouput = document.getElementById('output');
    document.getElementById('input').onchange = function(){
    var val = this.value.replace(/^0+|\D+/g, '');
    this.value = val;
    ouput.innerHTML = toRMB(val);
    }
    </script>
    </body>
    </html>