Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/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 JQuery检测ctrlKey和鼠标点击_Javascript_Jquery - Fatal编程技术网

Javascript JQuery检测ctrlKey和鼠标点击

Javascript JQuery检测ctrlKey和鼠标点击,javascript,jquery,Javascript,Jquery,我是JQuery新手,所以我不太懂逻辑。我用它来找出我拿着CtrlKey时点击的textarea的哪个索引。 但是,如何在onclick和键盘事件的组合上分配函数 //What I have tried: //textarea is the object where I want to detect both ctrlKey and mouse click $(textarea).keydown(function(event){ if(event.ctrlKey){ $(

我是JQuery新手,所以我不太懂逻辑。我用它来找出我拿着CtrlKey时点击的textarea的哪个索引。 但是,如何在onclick和键盘事件的组合上分配函数

//What I have tried:
//textarea is the object where I want to detect both ctrlKey and mouse click
$(textarea).keydown(function(event){
    if(event.ctrlKey){
        $(textarea).click(function(event){
            console.log("catched")
        })
    }
})
上面的方法确实有效,但是它会执行三次,即console.log会执行三次,所以有没有办法让它捕获一次。
不按ctrl键时也会出现这种情况。

我建议设置一个全局变量来保存ctrl键的状态

var ctrlDown=false;
与其简单地监听keydown事件,还不如监听keydup事件并相应地更新ctrldown

$(textarea).keydown(function(event) {
  if (event.ctrlKey) {
    ctrlDown = true;
  }
});
$(textarea).keyup(function(event) {
  if (event.ctrlKey) {
    ctrlDown = false;
  }
});
现在您知道实际按下了ctrl键,可以执行如下简单检查:

$(textarea).click(function(event) {
  if (ctrlDown) {
    console.log("catched")
  }
});

我建议设置一个全局变量来保存ctrl键的状态

var ctrlDown=false;
与其简单地监听keydown事件,还不如监听keydup事件并相应地更新ctrldown

$(textarea).keydown(function(event) {
  if (event.ctrlKey) {
    ctrlDown = true;
  }
});
$(textarea).keyup(function(event) {
  if (event.ctrlKey) {
    ctrlDown = false;
  }
});
现在您知道实际按下了ctrl键,可以执行如下简单检查:

$(textarea).click(function(event) {
  if (ctrlDown) {
    console.log("catched")
  }
});
您只需检查鼠标事件的属性:

$(函数(){
$('textarea')。在('click',函数(e)上{
如果(e.ctrlKey){
log('clicked with ctrl');
}否则{
log('clicked without ctrl');
}
});
});

单击我
您只需检查鼠标事件的属性即可:

$(函数(){
$('textarea')。在('click',函数(e)上{
如果(e.ctrlKey){
log('clicked with ctrl');
}否则{
log('clicked without ctrl');
}
});
});


单击我这里有几个小错误,但你的想法是正确的:)

首先,按照您的方式堆叠事件处理程序是没有意义的——我理解您的逻辑思维,但实际上JS不是这样工作的。你实际上说的是:

“如果用户在此文本区域按下一个键,并且他们的控制键已按下,则在此文本区域中添加一个事件侦听器,该侦听器可检测点击,并将捕获的
记录到控制台中。”

你真正想要的是:

$(“#txtarea”)。单击((e)=>{
如果(e.ctrlKey){
log(“控制+单击!”);
}
});

这里有几个小错误,但您的想法是正确的:)

首先,按照您的方式堆叠事件处理程序是没有意义的——我理解您的逻辑思维,但实际上JS不是这样工作的。你实际上说的是:

“如果用户在此文本区域按下一个键,并且他们的控制键已按下,则在此文本区域中添加一个事件侦听器,该侦听器可检测点击,并将捕获的
记录到控制台中。”

你真正想要的是:

$(“#txtarea”)。单击((e)=>{
如果(e.ctrlKey){
log(“控制+单击!”);
}
});


请分享一些代码,你尝试过的,等等。很抱歉,请分享一些代码,你尝试过的,等等。很抱歉,谢谢这项工作,但我真的希望我们可以相互嵌套(不是用我的方式,而是类似的工作方式)谢谢这项工作,但我真的希望我们可以相互嵌套(不是以我的方式,而是类似的方式)这在我使用字母键时同样有效,谢谢。这在我使用字母键时同样有效,谢谢。