当用户键入换行符时,Jquery字计数

当用户键入换行符时,Jquery字计数,jquery,Jquery,我在jquery中创建了一个单词计数 但是,如果用户按“回车”(换行),将导致剩余1个字符 例如,maxlength=10,如果用户类型abcde,\n,abc 总计仅为9个字符,div显示剩余1个字符 $(document).ready(function(){ //Word Count $('.word_count') .on('input keyup keydown focus', function () { var m

我在jquery中创建了一个单词计数

但是,如果用户按“回车”(换行),将导致剩余1个字符

例如,
maxlength=10
,如果用户类型abcde\nabc

总计仅为9个字符,
div
显示剩余1个字符

$(document).ready(function(){   
    //Word Count
        $('.word_count')
        .on('input keyup keydown focus', function () {
            var maxlength = $(this).attr('maxlength');
            var value = $(this).val();

            if(value.length > 0) {
                $(this).nextAll('div').first().text((maxlength - $(this).val().length));
            } else {
                $(this).nextAll('div').first().text(maxlength);
            }   
        }); 
});
我只是发现Chrome在textarea中的字符计数错误


您可以找到这样的精确字符长度(不包括任何空格和换行符)


演示
----->

您可以在计数前用类似以下内容替换空格:
。替换(/\s/,“”)

因此,不是:

$(this).val().length)
你可以:

$(this).val().replace(/\s/,'').length)

Chrome将换行符计数为2个字符,将这一个放在代码中就可以了

var isChrome = window.chrome;
if(isChrome){var value = $(this).val().replace(/(\r\n|\n|\r)/g,"  ");}
else{ var value = $(this).val();}

这使长度为2个字符,因此它将与chrome中的textarea长度相匹配

为什么我们再次使用join?PSR,如果按任意键,删除单词之间的
空格将仍然有效,因此如果按max-lenght,它仍然会有问题。因为我在使用倒计时,所以当点击backspace时,您不应该返回false。只需找出maxlength,\n纵向占用了2个字符。这正是预期的行为?请注意,您可能还需要捕捉“粘贴”。
var isChrome = window.chrome;
if(isChrome){var value = $(this).val().replace(/(\r\n|\n|\r)/g,"  ");}
else{ var value = $(this).val();}