当用户类型换行时,Jquery字会计数

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

http://jsfiddle.net/DqYsN/

但是,如果用户按“Enter”(换行符),则会导致剩下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); } }); }); 

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

Chrome使用maxlength属性计算textarea中的字符错误

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

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

 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)