输入小写金额转换为大写金额

html页面代码

<span>费用合计(人民币大写):
                            <input class="width_input" type="text" id="one"/><input class="width_input" type="text" id="two"/><input class="width_input" type="text" id="three"/><input class="width_input" type="text" id="four"/><input class="width_input" type="text" id="five"/><input class="width_input" type="text" id="six"/>元整,(小写):¥
                            <input class="width_input" type="number" style="width: 8%; padding: 0 0 0 5px;" id="moneyAmount"
                                   lay-verify="required|number|amountVerify"
                                   autocomplete="off"
                                   oninput="value=moneyInput(value)" onKeyUp="keyup()" onblur="blurFn()"/> 元。</span>

 

js代码

function Arabia_to_Chinese(Num) {
    for (let i = Num.length - 1; i >= 0; i--) {
        Num = Num.replace(",", "")//替换tomoney()中的“,”
        Num = Num.replace(" ", "")//替换tomoney()中的空格
    }
    Num = Num.replace("", "")//替换掉可能出现的¥字符
    if (isNaN(Num)) { //验证输入的字符是否为数字
        alert("请检查小写金额是否正确");
        return;
    }
    //---字符处理完毕,开始转换,转换采用前后两部分分别转换---//
    let part = String(Num).split(".");
    let newchar = "";
    //小数点前进行转化
    for (let i = part[0].length - 1; i >= 0; i--) {
        if (part[0].length > 6) {
            alert("位数过大,无法计算");
            return "";
        } //若数量超过拾亿单位,提示
        let tmpnewchar = ""
        let perchar = part[0].charAt(i);
        switch (perchar) {
            case "0":
                tmpnewchar = "/" + tmpnewchar;
                break;
            case "1":
                tmpnewchar = "" + tmpnewchar;
                break;
            case "2":
                tmpnewchar = "" + tmpnewchar;
                break;
            case "3":
                tmpnewchar = "" + tmpnewchar;
                break;
            case "4":
                tmpnewchar = "" + tmpnewchar;
                break;
            case "5":
                tmpnewchar = "" + tmpnewchar;
                break;
            case "6":
                tmpnewchar = "" + tmpnewchar;
                break;
            case "7":
                tmpnewchar = "" + tmpnewchar;
                break;
            case "8":
                tmpnewchar = "" + tmpnewchar;
                break;
            case "9":
                tmpnewchar = "" + tmpnewchar;
                break;
        }
        switch (part[0].length - i - 1) {
            case 0:
                tmpnewchar = tmpnewchar + "";
                break;
            case 1:
                if (perchar != 0) tmpnewchar = tmpnewchar + "";
                break;
            case 2:
                if (perchar != 0) tmpnewchar = tmpnewchar + "";
                break;
            case 3:
                if (perchar != 0) tmpnewchar = tmpnewchar + "";
                break;
            case 4:
                tmpnewchar = tmpnewchar + "";
                break;
            case 5:
                if (perchar != 0) tmpnewchar = tmpnewchar + "";
                break;
        }
        newchar = tmpnewchar + ',' + newchar;
    }
    //小数点之后进行转化
    if (Num.indexOf(".") != -1) {
        if (part[1].length == 1) {
        }
        if (part[1].length > 2) {
            alert("小数点之后只能保留两位,系统将自动截段");
            part[1] = part[1].substr(0, 2)
        }
        for (let i = 0; i < part[1].length; i++) {
            let tmpnewchar = ""
            let perchar = part[1].charAt(i)
            switch (perchar) {
                case "0":
                    tmpnewchar = "" + tmpnewchar;
                    break;
                case "1":
                    tmpnewchar = "" + tmpnewchar;
                    break;
                case "2":
                    tmpnewchar = "" + tmpnewchar;
                    break;
                case "3":
                    tmpnewchar = "" + tmpnewchar;
                    break;
                case "4":
                    tmpnewchar = "" + tmpnewchar;
                    break;
                case "5":
                    tmpnewchar = "" + tmpnewchar;
                    break;
                case "6":
                    tmpnewchar = "" + tmpnewchar;
                    break;
                case "7":
                    tmpnewchar = "" + tmpnewchar;
                    break;
                case "8":
                    tmpnewchar = "" + tmpnewchar;
                    break;
                case "9":
                    tmpnewchar = "" + tmpnewchar;
                    break;
            }
            if (i == 0) tmpnewchar = tmpnewchar + "";
            if (i == 1) tmpnewchar = tmpnewchar + "";
            newchar = newchar + ',' + tmpnewchar;
        }
    }
    //替换所有无用汉字
    while (newchar.search("零零") != -1)
        newchar = newchar.replace("零零", "");
    newchar = newchar.replace("零亿", "亿");
    newchar = newchar.replace("亿万", "亿");
    newchar = newchar.replace("零万", "");
    newchar = newchar.replace("零元", "");
    newchar = newchar.replace("零角", "");
    newchar = newchar.replace("零分", "");

    if (newchar.charAt(newchar.length - 1) == "" || newchar.charAt(newchar.length - 1) == "")
        newchar = newchar + ""
    //  document.write(newchar);
    return newchar;

}

/**
 *  实时显示input框输入金额
 */
function keyup() {
    let _val = $('#moneyAmount').val();
    _val = Number(_val);
    if (_val == '') {
        console.log('未输入金额');
        $("#one").val("");
        $("#two").val("");
        $("#three").val("");
        $("#four").val("");
        $("#five").val("");
        $("#six").val("");
    } else {
        let _numZh = Arabia_to_Chinese($('#moneyAmount').val());
        _numZh = _numZh.split(",");
        // console.log('_numZh', _numZh)
        let arr = [];
        arr.push(_numZh);
        try {
            for (let j = 0; j < arr[arr.length - 1].length - 1; j++) {
                let _obj = arr[j];
                let _splice = _obj[0].slice(1, 2);
                switch (_splice) {
                    case"": // 分十元还是十万
                        let _type = _obj[1].slice(1, 2);
                        switch (_type) {
                            case "":
                                $("#one").val(_obj[0].slice(0, 1));
                                $("#two").val(_obj[1].slice(0, 1));
                                $("#three").val(_obj[2].slice(0, 1));
                                $("#four").val(_obj[3].slice(0, 1));
                                $("#five").val(_obj[4].slice(0, 1));
                                $("#six").val(_obj[5].slice(0, 1));
                                break;
                            case "":
                                $("#five").val(_obj[0].slice(0, 1));
                                $("#six").val(_obj[1].slice(0, 1));
                                $("#one").val("");
                                $("#two").val("");
                                $("#three").val("");
                                $("#four").val("");
                                break;
                        }
                        break;
                    case"":
                        $("#six").val(_obj[0].slice(0, 1));
                        $("#one").val("");
                        $("#two").val("");
                        $("#three").val("");
                        $("#four").val("");
                        $("#five").val("");
                        break;
                    case"":
                        $("#four").val(_obj[0].slice(0, 1));
                        $("#five").val(_obj[1].slice(0, 1));
                        $("#six").val(_obj[2].slice(0, 1));
                        $("#one").val("");
                        $("#two").val("");
                        $("#three").val("");
                        break;
                    case"":
                        $("#three").val(_obj[0].slice(0, 1));
                        $("#four").val(_obj[1].slice(0, 1));
                        $("#five").val(_obj[2].slice(0, 1));
                        $("#six").val(_obj[3].slice(0, 1));
                        $("#one").val("");
                        $("#two").val("");
                        break;
                    case"":
                        $("#two").val(_obj[0].slice(0, 1));
                        $("#three").val(_obj[1].slice(0, 1));
                        $("#four").val(_obj[2].slice(0, 1));
                        $("#five").val(_obj[3].slice(0, 1));
                        $("#six").val(_obj[4].slice(0, 1));
                        $("#one").val("");
                        break;
                }
            }
        } catch (e) {
        }
    }
}

/**
 * 输入验证
 *
 * @param value
 * @returns {string}
 */
function moneyInput(value) {
    if (value.length > 6) {
        value = value.slice(0, 6); // 小数点前面控制最多只能输入6位。
    }
    //修复第一个字符是小数点 的情况.
    let fa = '';
    if (value !== '' && value.substr(0, 1) === '.') {
        value = "";
    }
    value = value.replace(/^0*(0\.|[1-9])/, '$1');//解决 粘贴不生效
    value = value.replace(/[^\d.]/g, "");  //清除“数字”和“.”以外的字符
    value = value.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的
    value = value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
    value = value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); //只能输入两个小数
    if (value.indexOf(".") < 0 && value !== "") { //以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
        if (value.substr(0, 1) === '0' && value.length === 2) {
            value = value.substr(1, value.length);
        }
    }
    value = fa + value;
    return value;
}

/**
 * 失去焦点时
 * */

function blurFn() {
    let _val = $('#moneyAmount').val();
    _val = parseFloat(_val).toFixed(2); // 小数点后面没有则自动补齐两位
    $('#moneyAmount').val(_val);
}

 

posted on 2021-04-19 09:05  小虾米吖~  阅读(218)  评论(0编辑  收藏  举报