如何找出用户输入或粘贴到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