当用户在输入中输入数字时,我正在尝试在keyup上的适当位置添加逗号。使用当前代码,值1,000可以使用,但10,000不可用。相反,后者显示为1,0000。
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));
}
);
};
我对我的代码的精简版本有一个小提琴,说明了这个问题:
答案 0 :(得分:1)
啊终于想通了:)。不是我最初的想法,但是您的函数会中断,因为当前.paynow
节点的值中包含,
。在传递给addCommas()
函数之前,您需要替换所有逗号:
recalc_total()
中的示例修复:
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();
});
}