Javascript - 拦截键盘按下

use*_*650 6 javascript jquery javascript-events

我有一个始终具有焦点的输入框.进入此输入框的命令始终是字母.如果用户按下一个数字,我希望它不会被添加到文本框中,而是用它来运行不同的命令(就像热键一样).

我看到这个实现的方式是通过查看keyup事件并删除不需要的字符.相反,有没有办法拦截键盘输入并检查插入前的值是什么?

我考虑过使用div创建自定义输入字段并拦截所有键盘命令.有没有办法让闪烁的插入符号看起来像一个输入框?

And*_*ker 7

听起来你想要一个contenteditablediv:

<div id="editor" contenteditable="true"></div>
Run Code Online (Sandbox Code Playgroud)

如果keydown事件不是字母,您可以监听事件并阻止它们:

$("#editor").keydown(function (e) {
    if (e.which > 90 || (e.which > 48 && e.which < 65)) {
        e.preventDefault();
    }
});
Run Code Online (Sandbox Code Playgroud)

要将数字作为"热键"处理,您只需确定哪个键e.which并采取相应措施.

示例: http ://jsfiddle.net/g3mgR/1