Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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/Shift/Alt键;单击';事件_Javascript_Jquery_Html_Firefox3.6 - Fatal编程技术网

Javascript 选中'上的Ctrl/Shift/Alt键;单击';事件

Javascript 选中'上的Ctrl/Shift/Alt键;单击';事件,javascript,jquery,html,firefox3.6,Javascript,Jquery,Html,Firefox3.6,如何识别以下代码中按下了哪些Ctrl/Shift/Alt键 $("#my_id").click(function() { if (<left control key is pressed>) { alert("Left Ctrl"); } if (<right shift and left alt keys are pressed>) { alert("Right Shift + Left Alt"); } }); $(“#我的_id”)。单击(函数()

如何识别以下代码中按下了哪些Ctrl/Shift/Alt键

$("#my_id").click(function() {
    if (<left control key is pressed>) { alert("Left Ctrl"); }
    if (<right shift and left alt keys are pressed>) { alert("Right Shift + Left Alt"); }
});
$(“#我的_id”)。单击(函数(){
if(){alert(“Left Ctrl”);}
if(){alert(“Right Shift+Left Alt”);}
});
我不知道是否可以在单击事件中检查左/右键,但我认为这是不可能的


我不知道是否可以在单击事件中检查左/右键,但我认为这是不可能的。

您知道,这在所有浏览器中都不起作用,只是IE 8。Microsoft实现了确定按下哪个(右/左)键的功能。这里有一个链接

我还发现了这篇关于浏览器中的keypress、keyup、keydown事件的文章。


好吧,你知道这不会在所有的浏览器中工作,只是IE 8。Microsoft实现了确定按下哪个(右/左)键的功能。这里有一个链接

我还发现了这篇关于浏览器中的keypress、keyup、keydown事件的文章。

使用。它是一个jQuery插件

这是一个测试,显示你在寻找什么。它还向您展示了如何捕获标准的左键、右键、上键、下键以及数字键盘上的键(带有数字2、4、6、8的键)! 使用。它是一个jQuery插件

这是一个测试,显示你在寻找什么。它还向您展示了如何捕获标准的左键、右键、上键、下键以及数字键盘上的键(带有数字2、4、6、8的键)!

比任何事情都简单:使用按键向下事件检查是Ctrl(17)还是Shift(16),然后使用按键向上事件检查是Enter(13)还是Ctrl或Shift(按下键时)之前按过)
在任何键上取消Ctrl或Shift,但输入比任何操作都简单:使用keydown事件检查是Ctrl(17)还是Shift(16),然后使用keyup事件检查是Enter(13)还是Ctrl或Shift(在键上按下)之前按下 取消任何键控键上的Ctrl或Shift,但在下面输入

,这是可能的解决方案

要检查按下了哪个特定的修改器键,可以使用()

为了支持IE8,幸运的是您可以使用

现在,解决方法是设置一个全局对象,该对象具有与保留哪些修改器关键点相关的属性。当然,不使用全局对象的其他方法也是可能的

在这里,我使用相关的javascript侦听器方法捕获事件(jQuery不支持捕获阶段)。我们捕获事件以处理
keydown/keyup
事件传播因某种原因被已在使用的代码停止的情况

/*用于检查保留的修改器键的全局变量*/
/*注意:如果同时按住控制左键和控制右键*/
/*仅处理第一个按下的键(默认浏览器行为?)*/
window.modifierKeys=(函数(){
/*处理除AltGr之外的修改器键,AltGr是controlRight+alt的快捷键*/
var mKeys={};
/*每次按下一把钥匙,只触发一次按键事件*/
var lastEvent,heldKeys={};
//捕获事件以避免任何事件停止传播
文档.添加的事件列表器('keydown',函数(e){
if(lastEvent&&lastEvent.which==e.which){
返回;
}
lastEvent=e;
heldKeys[e.which]=正确;
塞特尔基(e);
},对);
//捕获事件以避免任何事件停止传播
文件。添加的文件列表器(“键控”,功能(e){
lastEvent=null;
删除heldKeys[e.which];
塞特尔基(e);
},对);
函数setModifierKey(e){
mKeys.alt=e.altKey;
mKeys.ctrlLeft=e.ctrlKey&e.location==1;
mKeys.ctrlRight=e.ctrlKey&e.location==2;
mKeys.shiftLeft=e.shiftKey&e.location==1;
mKeys.shiftRight=e.shiftKey&e.location==2;
}
返回mKeys;
})();
/*单击div时,检查全局对象*/
$('.modifierKey')。在('click',function()上{
控制台日志(modifierKeys);
/*用于演示目的*/
$('.info').text(函数(){
var txt=[];
for(变量p在modifierKeys中){
if(modifierKeys[p])txt.push(p);
}
返回txt.toString();
});
})
/*用于演示*/
.info:不是(:空){
边框:1px纯红;
填充物:1em.5em;
字体大小:粗体;
}
.info:not(:empty):之后{
内容:“举行”;
字体大小:正常;
}

单击以捕捉修改器关键点的DIV

接下来,这是可能的解决方案

要检查按下了哪个特定的修改器键,可以使用()

为了支持IE8,幸运的是您可以使用

现在,解决方法是设置一个全局对象,该对象具有与保留哪些修改器关键点相关的属性。当然,不使用全局对象的其他方法也是可能的

在这里,我使用相关的javascript侦听器方法捕获事件(jQuery不支持捕获阶段)。我们捕获事件以处理
keydown/keyup
事件传播因某种原因被已在使用的代码停止的情况

/*用于检查保留的修改器键的全局变量*/
/*注意:如果同时按住控制左键和控制右键*/
/*仅处理第一个按下的键(默认浏览器行为?)*/
window.modifierKeys=(函数(){
/*处理除AltGr之外的修改器键,AltGr是controlRight+alt的快捷键*/
var mKeys={};
/*每次按下一把钥匙,只触发一次按键事件*/
var lastEvent,heldKeys={};
//捕获事件以避免任何事件停止传播
文档.添加的事件列表器('keydown',函数(e){
if(lastEvent&&lastEvent.which==e.which){
返回;
}
lastEvent=e;
heldKeys[e.which]=正确;
塞特尔基(e);
},对);
//捕获事件以避免任何事件停止传播
文件。添加的文件列表器(“键控”,功能(e){
lastEvent=null;
删除heldKeys[e.which];
塞特尔基(e);
},对);
函数setModifierKey(e){
mKeys.alt=e.altKey;
mKeys.ctrlLeft=e.ctrlKey&e.location==1;
mKeys.ctrlRight=e.ctrlKey和&e.location=
$('#someelement').bind('click', function(event){
   if(event.ctrlKey)
      console.log('ctrl');
   if(event.altKey)
      console.log('alt');
   if(event.shiftKey)
      console.log('shift');

});
$('#someelement').bind('click', function(event){ 

    if(event.ctrlKey) {
      if (event.ctrlLeft) {
        console.log('ctrl-left'); 
      }
      else {
        console.log('ctrl-right');
      }
    }
    if(event.altKey) {
      if (event.altLeft) {
        console.log('alt-left'); 
      }
      else {
        console.log('alt-right');
      }
    }
    if(event.shiftKey) {
      if (event.shiftLeft) {
        console.log('shift-left'); 
      }
      else
      {
        console.log('shift-right');
      }
    }
  }); 
var altKeyPressed = instanceOfMouseEvent.altKey
var a=[];
function keyName(p){
    var cases = {16:'Shift',17:'CTRL',18:'Alt'};
    return cases[p] ? cases[p] : 'KeyCode: '+p;
}
function keyPosition(p){
    var cases = {1:'Left',2:'Right'};
    return cases[p] ? cases[p]+' ' : '';
}
$('input').on('keydown',function(e){
    a.push(keyPosition(e.originalEvent.location)+keyName(e.keyCode));
})
$('input').on('keyup',function(){
    var c='';
    var removeDuplicates = [];
    $.each(a, function(i, el){
        if ($.inArray(el, removeDuplicates) === -1) {
           removeDuplicates.push(el);
           c=c+(el)+' + ';
        }
    });
    a=[];
    alert(c.slice(0, -3))
});
var a=[];
function keyName(p){
    var cases = {16:'Shift',17:'CTRL',18:'Alt'};
    return cases[p] ? cases[p] : '';
}
function keyPosition(p){
    var cases = {1:'Left',2:'Right'};
    return cases[p] ? cases[p]+' ' : '';
}
$(document).on('keydown',function(e){
    a.push(keyPosition(e.originalEvent.location)+keyName(e.keyCode));
})
$('#my_id').on('click',function(){
    var c='';
    var removeDuplicates = [];
    a =a.filter(function(v){return v!==''});
    $.each(a, function(i, el){
      if ($.inArray(el, removeDuplicates) === -1){
          removeDuplicates.push(el);
          c=c+(el)+' + ';
      }
    });
    if (c) alert(c.slice(0, -3));
    a=[];   
});
document.addEventListener("click", (evn) => {
  const shift = evn.getModifierState("Shift");
  const ctrl = evn.getModifierState("Control");
  const alt = evn.getModifierState("Alt");

  console.log("Mouse pressed! Modifiers:");
  console.table({shift, ctrl, alt});
});