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); }