Слово JQuery подсчитывается, когда пользовательский разрыв строки
У меня есть счетчик слов в jquery.
http://jsfiddle.net/DqYsN/
Однако, если пользователь нажимает 'Enter' (разрыв строки), это приведет к оставлению 1 символа.
ex. maxlength=10
, если пользовательский тип abcde, \n, abc
total становятся только 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 считает неправильные символы в textarea с атрибутом maxlength
Ответы
Ответ 1
Отметка строки хрома в виде двух символов, поместите ее внутри вашего кода в порядке.
var isChrome = window.chrome;
if(isChrome){var value = $(this).val().replace(/(\r\n|\n|\r)/g," ");}
else{ var value = $(this).val();}
" "
это делает длину 2 символа, поэтому она будет соответствовать длине textarea в chrome
Ответ 2
Вы можете найти точную длину символа, как это (исключая пробелы и разрывы строк)
var length = $.trim($(this).val()).split(" ").join("").split('\n').join('').length;
Демо ----->
http://jsfiddle.net/DqYsN/1/
Ответ 3
Вы можете заменить пробелы перед подсчетом следующим образом: .replace(/\s/,'')
Итак, вместо:
$(this).val().length)
Вы делаете:
$(this).val().replace(/\s/,'').length)