我如何得到字符按在一个文本区
How do I get the character pressed in a textarea
这真的很奇怪。
我有一个文本区。我监听keyup和keypress事件。
当我按"("时,keypress被触发,e.keyCode == e.which == 40
当我按下箭头向下键时,keyup被触发,e.keyCode == e.which == 40
为什么这么奇怪?
keydown
和keyup
事件提供了一个代码,表示按下了哪个键,而keypress
事件则表示输入了哪个字符。
"("的字符代码为40 (keypress
事件),向下箭头的键代码也为40 (keyup
)。
试题:
String.fromCharCode(40); // "("
传统上,箭头键与ASCII码重叠,但对程序员来说是用两个字节的序列表示的,因此您可以知道按下了一个特殊的键。随着Unicode的出现,这不再是一个干净的解决方案。
浏览器已经实现了不同的方式来表示Javascript运行时的特殊键输入。细节在这里解释。我通常在检测箭头键时使用'keydown'事件,因为该事件附加了正确的键码,并且当用户键入左括号时将使用不同的键码(9)。如果您想让用户通过按住箭头键来重复键入的事件,那么这可能不起作用。
相关文章:
- 如何将文本区和编辑区分开
- JSTree's data.rslt.obj.text()返回一个文本数组,而不是所需节点的文本
- 使用Javascript从一个文本区域逐行解析.subsr(0,6)到另一个文本区
- 如何将文本从一个文本字段复制到其他文本字段
- 单击按钮时如何聚焦下一个文本字段
- Epic编辑器可以't访问我的文本区轨道
- codeigniter:最后一个文本字段中的值重复本身或不重复't从文本字段中获取值
- 将文档的MongoDB字段合并到一个文档中
- window.opener调用函数给了我一个文档.getElementById(..)为null
- 我如何得到字符按在一个文本区
- Ajax:批量url列表在文本区发送请求一个接一个,并显示重复的答案
- 在ng-click AngularJS中添加一个文本区输入类型和字符串
- 我怎么能有一个文本区弹出时,用户单击一个按钮
- 在JavaScript中,如何拥有一个只读文本区,并仍然获得onselect事件
- 从文本区匹配一个单词
- 用JavaScript创建一个文本区
- 你可能有一个脚本在HTML文本区/文本字段,并有它执行
- 我如何有一个复选框/单选按钮张贴到一个文本区,当我点击提交按钮
- 如何使用jQuery/Javascript创建一个显示输入滑块值的动态文本区
- 如何生成一个JS编辑器/文本区,根据每个单词的长度对其进行样式化