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