Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测Ctrl+;关键事件中的事件_Javascript_Jquery - Fatal编程技术网

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..检查。不处理单个字母。我知道它在键控模式下工作..我需要它用于键控模式..原因是我在文本框中使用自动搜索,我只想在键控模式下搜索。如果你像现有的那样准备小提琴,我可以提供更多帮助。这是正确的答案。我本来也会写同样的,但凯伊多写得更快。