试了下虽然原理简单,还挺麻烦的因为要使得结果可读化。。主要是不能出现零,还有整数和小数分和角的显示与不显示
原理就是获取个十百千万的数字,然后套一个数组咯<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>无标题文档</title>
    <script src="http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript">
        //小写转大写
        function digit_uppercase(n) {
            var fraction = ['角', '分'];
            var digit = [
                '零', '壹', '贰', '叁', '肆',
                '伍', '陆', '柒', '捌', '玖'];
            var unit = [
                ['元', '万', '亿'],
                ['', '拾', '佰', '仟']
            ];
            var head = n < 0 ? '欠' : '';
            n = Math.abs(n);            var s = '';            for (var i = 0; i < fraction.length; i++) {
                s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
            }
            s = s || '整';
            n = Math.floor(n);            for (var i = 0; i < unit[0].length && n > 0; i++) {
                var p = '';
                for (var j = 0; j < unit[1].length && n > 0; j++) {
                    p = digit[n % 10] + unit[1][j] + p;
                    n = Math.floor(n / 10);
                }
                s = p.replace(/(零.)*零$/, '')
                        .replace(/^$/, '零') + unit[0][i] + s;
            }
            return head + s.replace(/(零.)*零元/, '元')
                    .replace(/(零.)+/g, '零')
                    .replace(/^整$/, '零元整');
        }
        function change_money(currency){
            _cn_result=digit_uppercase(currency)
            $("#result").html(digit_uppercase(currency));           $("#wan").val(get_cn(currency,5));           $("#qian").val(get_cn(currency,4));
            $("#bai").val(get_cn(currency,3));
            $("#shi").val(get_cn(currency,2));
            $("#yuan").val(get_cn(currency,1));
           $("#jiao").val(get_cn(currency,-1));
            $("#feng").val( get_cn(currency,-2));        }
        function get_cn(_number,position){
            if(position=='undefined')
            { alert("错误!参数!缺失!");
            return }
            var _digit = [
                '', '壹', '贰', '叁', '肆',
                '伍', '陆', '柒', '捌', '玖'];
            _pat=/^-?[1-9]+$/g;
            if(!_pat.test(position)){
                alert("第二个参数有误!");
                return
            }
            _number=Math.abs(_number);
            if(_number>10000&&position>4)
            return digit_uppercase(_number).split("万")[0];
            //无小数位开始倒着取
            if((_number+"").indexOf(".")==-1){
                _arr=(_number+"").split("");
                if(position<=0)return"";
                return _digit[_arr[_arr.length-position]]            }else{//有就要做出偏移,因为多出3位
                _number=new Number(_number).toFixed(2);
                _arr=(_number+"").split("");
                return _digit[_arr[_arr.length-position-3]]
            }
             
        }
    </script>
</head><body>
<p>
    <label for="money">金额:</label>
    <input type="text" name="money" onpropertychange=="javascript:change_money(this.value);" oninput="javascript:change_money(this.value);" id="money">
    <span id="result"></span></p>
<p>
    <input type="text" name="wan" id="wan">
    <label for="wan">万 </label>
    <input type="text" name="qian" id="qian">
    <label for="qian">千</label>
    <input type="text" name="bai" id="bai">
    <label for="bai">百</label>
    <input type="text" name="shi" id="shi">
    <label for="shi">拾</label>
    <input type="text" name="yuan" id="yuan">
    <label for="shi">元</label>
    <input type="text" name="jiao" id="jiao">
    <label for="shi">角</label>
    <input type="text" name="feng" id="feng">
    <label for="shi">分</label>
</p>
</body>
</html>