2014-01-13 31 views
-1
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個字符。爲什麼?錯誤地計算字符數

更新 設法得到它的工作,謝謝大家

幫助表示讚賞!

+3

爲什麼不'textarea.value.substring(0,200)'? –

+3

是「不正確地計算字符」一個奇怪的邏輯表達式「計算正確」? – feeela

+0

@feeela哎呀我編輯了標題。謝謝 – kittymeows

回答

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

+0

謝謝但測試字符數,它仍然顯示201.嗯 – kittymeows

+0

嘗試了另一種方式,但結果是它什麼都不做或返回空。 – kittymeows

1

substring()方法返回一個 索引和另一個,或通過串的端部之間的字符串的一個子集。

str.substring(indexA[, indexB]) 

串起來,但不包括 indexB從指數A提取的字符。

所以,你只需要做:

textarea.val().substring(0, 200) 
+0

'substring'忽略換行符等 - 根據原始代碼? –

+0

@Cd - 嘗試子字符串(0,限制),但它返回錯誤'不能調用方法'子字符串'未定義 – kittymeows

+0

@adam,它確實忽略換行符並用doc測試以比較字符數 – kittymeows