【发布时间】:2015-01-26 07:31:07
【问题描述】:
我想知道在元素上触发双击事件时按下(按住并按下)哪个键。
事件处理程序允许我获取 alt、shift、meta 和 ctrl 键。如果我想检测“x”是否在双击时被击落...或者任何其他字母或数字。
【问题讨论】:
标签: javascript jquery double-click
我想知道在元素上触发双击事件时按下(按住并按下)哪个键。
事件处理程序允许我获取 alt、shift、meta 和 ctrl 键。如果我想检测“x”是否在双击时被击落...或者任何其他字母或数字。
【问题讨论】:
标签: javascript jquery double-click
如果您想检测 ctrl、alt 或 shift 键,它们会暴露在传递给您的事件对象上。
$(document).on('dblclick', function(e){
/*
* here you could use e.altKey, e.ctrlKey and e.shiftKey - all of them
* are bools indicating if the key was pressed during the event.
*/
});
如果您想检测不同的密钥,那么 omar-ali 的回答似乎是正确的做法。
【讨论】:
您必须在 keyup 事件之前存储 keycode,并在双击事件时引用当前值。
var heldKey;
$(document).on({
'keydown' : function(e) {
heldKey = e.which || e.keyCode;
},
'keyup': function(e) {
heldKey = undefined;
},
'dblclick': function(e){
console.log(String.fromCharCode(heldKey));
}
});
【讨论】:
一种可能性是这样做,88 = 字母 x.. 但是.. 有没有更好的方法。
$(document).on('keydown','body',function(e) {
//console.log(e.keyCode);
if(e.keyCode==88)
keyed = true;
});
$(document).on('keyup','body',function(e) {
if(e.keyCode==88)
keyed = false;
});
$(document).on('dblclick','body',function(e) {
if(keyed==true)
alert('yes');
keyed=false;
});
【讨论】: