Слово JQuery учитывается при разрыве строки пользовательского типа

У меня есть счетчики слов создать в jquery.

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

я просто узнаю, что Chrome считает неправильно символы в textarea

Chrome считает неправильно символы в текстовой области с атрибутом maxlength

3 ответа

Решение

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

Вы можете найти точную длину символа, как это (исключая любые пробелы и разрывы строк)

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

демонстрация -----> http://jsfiddle.net/DqYsN/1/

Вы можете заменить пробелы, прежде чем считать что-то вроде: .replace(/\s/,'')

Так что вместо:

$(this).val().length)

Ты сделаешь:

$(this).val().replace(/\s/,'').length)
Другие вопросы по тегам