use*_*650 6 javascript jquery javascript-events
我有一个始终具有焦点的输入框.进入此输入框的命令始终是字母.如果用户按下一个数字,我希望它不会被添加到文本框中,而是用它来运行不同的命令(就像热键一样).
我看到这个实现的方式是通过查看keyup事件并删除不需要的字符.相反,有没有办法拦截键盘输入并检查插入前的值是什么?
我考虑过使用div创建自定义输入字段并拦截所有键盘命令.有没有办法让闪烁的插入符号看起来像一个输入框?
听起来你想要一个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