Javascript 逗号';s未正确放置在键盘上的输入中
当用户在输入中输入一个数字时,我试图在keyup上的适当位置添加逗号。对于当前代码,值1000有效,但10000无效。相反,后者显示为10000Javascript 逗号';s未正确放置在键盘上的输入中,javascript,jquery,Javascript,Jquery,当用户在输入中输入一个数字时,我试图在keyup上的适当位置添加逗号。对于当前代码,值1000有效,但10000无效。相反,后者显示为10000 addCommas = function(input) { return (input.toString()).replace( /^([-+]?)(0?)(\d+)(.?)(\d+)$/g, function(match, sign, zeros, before, decimal, after) {
addCommas = function(input) {
return (input.toString()).replace(
/^([-+]?)(0?)(\d+)(.?)(\d+)$/g,
function(match, sign, zeros, before, decimal, after) {
var reverseString = function(string) {
return string.split('').reverse().join('');
};
var insertCommas = function(string) {
var reversed = reverseString(string);
var reversedWithCommas = reversed.match(/.{1,3}/g).join(',');
return reverseString(reversedWithCommas);
};
return sign + (decimal ? insertCommas(before) + decimal + after : insertCommas(before + after));
}
);
};
我的代码有一个精简版本,可以说明这个问题:
啊终于明白了:)。不是我最初的想法,但是您的函数中断了,因为当前
.paynow
节点的值中有一个,
。在传递到addCommas()函数之前,需要替换所有逗号:
recalc\u total()
中的修复示例:
有趣的是,我一直在看你的小提琴,一切都很好,还没有找到问题所在。有趣的是,如果按住一个数字键,它将正确地填充逗号。我怀疑这与你的键盘功能有关,但我还没有确认。当然。这很有道理。谢谢你看这个,艾伦。没问题@dentalhero,只是出于好奇,为什么要用这么多正则表达式<代码>/^([-+]?)(0?)(\d+)(\d+)$/
在处理时似乎没有必要。我觉得确定输入是整数会更快。
function recalc_total() {
$('.paynow').keyup(function() {
var $ThisCheck = $(this).parents('tr').find('.payfull');
// Add Commas if # is over 1,000
// *** See My Edit Here, by adding `.replace(/,/g, '')` ***
$(this).val(addCommas($(this).val().replace(/,/g, ''));
if ($(this).val() == $ThisCheck.val().replace('$', '')) {
$ThisCheck.iCheck('check');
} else {
$ThisCheck.iCheck('uncheck');
}
CalcFooter();
});
}