逗号未正确放入密钥输入中

时间:2016-10-05 16:28:56

标签: javascript jquery

当用户在输入中输入数字时,我正在尝试在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));
        }
    );
}; 

我对我的代码的精简版本有一个小提琴,说明了这个问题:

http://jsfiddle.net/tgf59ezr/7/

1 个答案:

答案 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();
    });
}

http://jsfiddle.net/tgf59ezr/14/