Javascript JQuery检测ctrlKey和鼠标点击
我是JQuery新手,所以我不太懂逻辑。我用它来找出我拿着CtrlKey时点击的textarea的哪个索引。 但是,如何在onclick和键盘事件的组合上分配函数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){ $(
//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(“控制+单击!”);
}
});代码>
请分享一些代码,你尝试过的,等等。很抱歉,请分享一些代码,你尝试过的,等等。很抱歉,谢谢这项工作,但我真的希望我们可以相互嵌套(不是用我的方式,而是类似的工作方式)谢谢这项工作,但我真的希望我们可以相互嵌套(不是以我的方式,而是类似的方式)这在我使用字母键时同样有效,谢谢。这在我使用字母键时同样有效,谢谢。