不确定是否有办法做到这一点,但实际情况是我从输入中添加了 2 个值,然后将它们显示在标签 $totalRetailAmountField
中。但是,有时如果您在其中一个数字中加入破折号,它会丢弃最终数字(即使使用正则表达式去除破折号、逗号等)。有没有办法先检查数字,然后添加它们?谢谢
function calcTotalRetailVal() {
var num1 = $oneTimeCostField.val();
var num2 = $recurringTotalCostField.val();
var result = parseFloat(num1.replace(/(,|[^\d.-]+)+/g, '')) + parseFloat(num2.replace(/(,|[^\d.-]+)+/g, ''));
if (!isNaN(result)) {
$totalRetailAmountField.text('$' + result.toFixed(2));
}
}
calcTotalRetailVal();
$oneTimeCostField.on("keydown keyup", function() {
calcTotalRetailVal();
});
$recurringTotalCostField.on("keydown keyup", function() {
calcTotalRetailVal();
});
最佳答案
在您的模式 (,|[^\d.-]+)+
中,您使用交替来匹配逗号或匹配任何未列出的字符的否定字符类在开头使用 ^
就像 [^\d.-]
这意味着您没有删除数字、点,但也没有删除破折号。
根据您想用空字符串替换的内容,您可以使用单个字符类并列出您想要替换的内容,例如匹配逗号、破折号或空格字符 [,\s-]
,或者使用\D+
来匹配所有非数字。
例如 num1.replace(/[,\s-]+/g, '')
或 num1.replace(/\D+/g, '')
关于javascript - 检查输入的数字是否有效然后添加它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55639905/