Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 逗号';s未正确放置在键盘上的输入中_Javascript_Jquery - Fatal编程技术网

Javascript 逗号';s未正确放置在键盘上的输入中

Javascript 逗号';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) {

当用户在输入中输入一个数字时,我试图在keyup上的适当位置添加逗号。对于当前代码,值1000有效,但10000无效。相反,后者显示为10000

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