2015-05-14 27 views
1

我想獲取textarea中的字符數。這需要在每次擊鍵時進行更新。所以我用這個簡單的功能:在關鍵字上在textarea中獲取字符

$(document).on('keyup', 'textarea', function() { 
    var count = $(this).val().length; 
    console.log(count); 
}); 

現在的問題是,如果我嘗試鍵入非常快,計數重複。我們可以在控制檯中看到重複。這種重複背後的原因是什麼?另外我該如何避免它? 這是小提琴:https://jsfiddle.net/w6mzzfd8/

謝謝!

+0

我無法在控制檯中強制重複長度。請記住,只有在釋放密鑰時纔會調用該事件。 – kosmos

回答

3

作爲每文檔:

的按鍵事件被髮送到當瀏覽器登記鍵盤輸入的元件。這與keydown事件類似,除了關鍵重複的情況。如果用戶按下並保持一個鍵,則觸發一次keydown事件,但是對於每個插入的字符觸發單獨的按鍵事件。另外,修飾鍵(如Shift)觸發keydown事件,但不觸發按鍵事件。

解決方案:

使用​​,而不是keyup

代碼:

$(document).on('keydown', 'textarea', function() { 
var count = $(this).val().length; 
console.log(count); 
}); 

Working Demo

+0

如果你不想讓shift/ctrl等顯示重複的數字,請嘗試「按鍵」。 –