如何找出用戶輸入或粘貼到textarea的內容?例如,如果他們在索引1處鍵入B
(或β
),或者他們在索引23處粘貼了hello world\n
。我已經搜索了一點兒但找不到任何東西。這裏是我到目前爲止,使用jQuery的:JavaScript textarea:輸入/粘貼的內容和位置?
$("textarea").keydown(function(evt){
var index= getCaret(this); // this.selectionStart doesn't work in IE
var key = evt.keyCode; // Wrong.
}
爲getCaret
見this question。 event.keyCode
的問題是非英文鍵盤佈局。就粘貼而言,我完全陷入困境。
如果可能,我想知道textarea更改之前的值 - 即從keydown事件中。我不確定這是否可以粘貼。
(刪除更容易 - 檢測keyCode==8
退格鍵和keyCode==46
對德爾如果selection.length > 0
,然後選擇刪除;否則,字符或解除後,從理論上講有前還粘貼上的選擇上面的情況。 )
任何讓這個更接近於在任何瀏覽器中工作的任何部分都非常感謝。也就是說,你怎麼知道:
- 輸入字符的unicode字符串值?
- 何時發生粘貼?
- 粘貼文本內容是什麼?
'evt.which'與'evt.keyCode'具有相同的鍵盤佈局問題。我曾考慮過'setTimout'選項(它也可以解決佈局問題),但是這需要對輸入的每個字符進行可能冗長的比較,並且在輸入字符之前無法完成。無論如何,謝謝,我已經提出了你的答案。 – 2009-12-10 20:40:00
'evt.which'等效於非IE瀏覽器中的'keypress'事件中的'evt.charCode',它在更多的瀏覽器中被支持並報告字符代碼而不是鍵碼,所以沒有鍵盤佈局問題。此頁面是關鍵事件的良好參考:http://unixpapa.com/js/key.html。 'setTimeout'建議僅適用於粘貼,並且對於每個鍵入的字符都不需要。 – 2009-12-10 21:33:15