当用户类型换行时,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使用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)