zoukankan      html  css  js  c++  java
  • 输入小写金额转换为大写金额

    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=" 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+).(dd).*$/, '$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);
    }

     

    没有人能一路单纯到底,但是要记住,别忘了最初的自己!
  • 相关阅读:
    ActiveMQ学习(四)——应用程序接口
    ActiveMQ学习(三)——MQ的通讯模式
    ActiveMQ学习(二)——MQ的工作原理
    ActiveMQ学习(一)——MQ的基本概念
    java获取对象属性类型、属性名称、属性值 【转】
    Java方法的参数是按值传递的.【转】
    Jquery 操作 select
    JQuery中根据属性或属性值获得元素
    XML 标记使用的特殊字符对应内置实体
    创建DBLink语句
  • 原文地址:https://www.cnblogs.com/LindaBlog/p/14675461.html
Copyright © 2011-2022 走看看