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

时间:2013-06-18 10:53:27

标签: jquery

我在jquery中创建了一个单词count。

http://jsfiddle.net/DqYsN/

但是如果用户按“Enter”(换行符),则会导致剩下1个字符。

例如maxlength=10,如果用户输入 abcde \ n abc

总计仅变为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);
            }   
        }); 
});

我发现textarea中的Chrome计数字符错误

Chrome counts characters wrong in textarea with maxlength attribute

3 个答案:

答案 0 :(得分:1)

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

var length = $.trim($(this).val()).split(" ").join("").split('\n').join('').length;

演示-----> http://jsfiddle.net/DqYsN/1/

答案 1 :(得分:1)

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长度相匹配

答案 2 :(得分:0)

您可以使用以下内容替换空格:.replace(/\s/,'')

所以而不是:

$(this).val().length)

你这样做:

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