jQuery ( function ( $ ) {
var textarea = $('.project');
var $counter = $('.chars');
var limit = 200;
var initial = 0;
$(textarea).on('keypress keyup copy paste', function(){
displayLength();
});
function displayLength() {
var thisChars = textarea.val().replace(/(\r\n|\n|\r)/g, '').length;
if (thisChars > limit) {
//$counter.text(thisChars + ' of 200 chars');
var CharsToDel = (thisChars-limit);
textarea.val() = textarea.val().substring(0,textarea.val().length-CharsToDel);
} else {
$counter.text(initial + thisChars +' of 200 chars 2');
}
}
displayLength();
});
问题在于它错误地计算字符。如果限制为200,则应将其(使用子字符串)剪切为200个字符,而不是打印201个字符。为什么呢?
更新 管理让它运作,谢谢大家
非常感谢帮助!
答案 0 :(得分:1)
substring()
方法返回一个字符串的子集 索引和另一个,或通过字符串的结尾。
str.substring(indexA[, indexB])
substring从indexA中提取字符,但不包括 indexB。
所以你只需要这样做:
textarea.val().substring(0, 200)
答案 1 :(得分:0)
textarea
是一个jQuery对象,而不是一个html元素 - 所以你要使用.val()
而不是.value
而不是:
textarea.value = textarea.value.substring(0,textarea.value.length-CharsToDel);
尝试:
textarea.val(textarea.val().substr(0,textarea.val().length-CharsToDel));