不正确地计算字符

时间:2014-01-13 19:04:28

标签: javascript

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个字符。为什么呢?

更新 管理让它运作,谢谢大家

非常感谢帮助!

2 个答案:

答案 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));

Click for a working example on jsfiddle