【发布时间】:2022-08-18 23:34:45
【问题描述】:
我已通过 Javascript keyup 在标准表单中的输入字段中添加了一千个分隔符:
形式
<input id=\"cal2_txtLoan\" class=\"investment-class-form\" type=\"text\" placeholder=\"placeholder\">
Javascript 事件按键
<script>
var cal2_txtLoan = document.getElementById(\'cal2_txtLoan\');
cal2_txtLoan.addEventListener(\'keyup\', function() {
var val = this.value;
val = val.replace(/[^0-9\\.]/g,\'\');
if(val != \"\") {
valArr = val.split(\'.\');
valArr[0] = (parseInt(valArr[0],10)).toLocaleString();
val = valArr.join(\'.\');
}
this.value = val;
});
</script>
它工作正常,但现在我的表单无法提交,因为值中的逗号 \",\"
如何在输入字段中显示我的小数分隔符,但只提交值。
我的其余计算供参考:
<script>
function CalculatePMT(pv, rate, years) {
return Math.round(pv * (rate / 100 / 12) / (1 - 1 / Math.pow ((1 + rate / 100 / 12) , ( years * 12))));
}
/************** CALCULATE LOAN *************/
$(\"#cal2_btnCalculate\").click(Calculate2);
function Calculate2(event) {
var years = $(\"#cal2_txtTenor\").val();
var rate = $(\"#cal2_txtInterestRate\").val();
var pv = $(\"#cal2_txtLoan\").val();
if (CheckForDigit(years) && CheckForDigit(rate) && CheckForDigit(pv)) {
var ir = (rate / 100) * 100; // For LH, add 1 more
var installment = CalculatePMT(pv, ir, years);
$(\"#cal2_txtInstallment\").val(FormatNumberToString(installment));
$(\"#cal2_txtMinimumIncome\").val(FormatNumberToString(installment ));
} else
alert(\"ไม่สามารถคำนวนวงเงินสินเชื่อเพื่อการซื้อบ้านได้\");
}
/*****************************************/
});
</script
-
也许 parseInt developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 即: ParseInt(15.23) = 15 但如果您允许用户提交小数,您可能不应该忽略十进制值。
-
题外话:
this.value = val会将光标/用户输入重新定位到输入框的末尾。如果用户做的不仅仅是输入数字,这会很快惹恼他们——这是一个糟糕的用户体验。 -
问题的标题不正确 - 它不是“小数分隔符”而是“千位分隔符”——即
1,000中的,
标签: javascript jquery regex keyup