Javascript 检测Ctrl+;关键事件中的事件
我想在输入中检测控件+事件。我可以找到控件+事件,但即使在Javascript 检测Ctrl+;关键事件中的事件,javascript,jquery,Javascript,Jquery,我想在输入中检测控件+事件。我可以找到控件+事件,但即使在返回false之后,该函数仍在继续 jsFiddle- $('.searchTerm').keyup(函数(e){ $(“#状态”)。文本(“”); 如果(e.ctrlKey){ 如果(e.keyCode==65 | | e.keyCode==97){/'A'或'A' 控制台日志(“按下控件”); e、 预防默认值(); 返回false; } } $(“#状态”).text(“如果按下Ctrl+A,则此操作不起作用”); }); 事实并
返回false
之后,该函数仍在继续
jsFiddle-
$('.searchTerm').keyup(函数(e){
$(“#状态”)。文本(“”);
如果(e.ctrlKey){
如果(e.keyCode==65 | | e.keyCode==97){/'A'或'A'
控制台日志(“按下控件”);
e、 预防默认值();
返回false;
}
}
$(“#状态”).text(“如果按下Ctrl+A,则此操作不起作用”);
});代码>
事实并非如此。您必须将事件从'keyup'
更改为'keydown'
。然后再试一次。你可以检查一下这把小提琴
如果您需要控制自动完成,则必须在发送数据之前放置控件
Ctrl keyup事件触发器导致您的问题。我在代码中添加了另一个条件
if (e.keyCode == 17) // Ctrl key, fires at Ctrl's keyup.
return false;
你可以检查我的新小提琴。实际上该功能停止。您所经历的是触发两个键控事件:一个来自ctrl,另一个来自A
第一个按预期返回,因为它确实满足了要求:ctrlKey==true
和keyCode==65 | | keyCode==97
但是第二个,只需按下一个键,因此两个语句不能同时为真:
- 如果上次释放ctrl,则
ctrlKey
为真,但keyCode==65 | | keyCode==97
为假
- 如果上次释放A,则
ctrlKey
现在为false
然后运行将#status
设置为错误消息的行。control+a在您的浏览器中做什么?它打印文本…它不会在keydown
触发之前中断功能keyup
对吗?这是因为当您释放最后一个键时,或者没有更多的ctrlKey
,钥匙代码不是a
或a
anymore@TheWarlock:yupe..检查。不处理单个字母。我知道它在键控模式下工作..我需要它用于键控模式..原因是我在文本框中使用自动搜索,我只想在键控模式下搜索。如果你像现有的那样准备小提琴,我可以提供更多帮助。这是正确的答案。我本来也会写同样的,但凯伊多写得更快。