Javascript 我如何知道键盘上最后按下的2键
是否有可能知道键盘上最后按下的两个键是什么?Javascript 我如何知道键盘上最后按下的2键,javascript,jquery,keyboard-events,Javascript,Jquery,Keyboard Events,是否有可能知道键盘上最后按下的两个键是什么? 我该怎么做? 我需要比较这些键,如果它们相同,则制作一些功能。 例如,如果有人按Enter键-这是第一个函数,如果在Enter键后按空格-这是第二个函数。如果在输入后按Ctrl键-这是第三个功能。 所以,我认为唯一的方法是使用当前和以前的键值生成一个2var,并生成一个IF-ELSE-IF函数 :-) 这是一种获取当前键值的方法 $('#text').keydown(function(event) { $('#show').text(event.
我该怎么做?
我需要比较这些键,如果它们相同,则制作一些功能。
例如,如果有人按Enter键-这是第一个函数,如果在Enter键后按空格-这是第二个函数。如果在输入后按Ctrl键-这是第三个功能。
所以,我认为唯一的方法是使用当前和以前的键值生成一个2var,并生成一个IF-ELSE-IF函数
:-)
这是一种获取当前键值的方法
$('#text').keydown(function(event) {
$('#show').text(event.keyCode);
});
或者,更好的问题!(我现在看到了)直接在此编辑器中,在我按下doublespace后,它将跳转到live preview中的行。
它是如何工作的?我不确定,但我认为我需要的几乎是一样的。
多谢各位 我认为存储最后按下的键并在事件处理程序中检查新旧
keyCode
是一种很好的方法
$('#text').keydown((function() {
var lastKey = undefined;
return function(event) {
// here you have both the old and new keyCode
lastKey = event.keyCode;
};
})());
另外,两个空格是解释。我认为在事件处理程序中存储最后按下的键并检查新旧的
keyCode
是一种很好的方法
$('#text').keydown((function() {
var lastKey = undefined;
return function(event) {
// here you have both the old and new keyCode
lastKey = event.keyCode;
};
})());
另外,两个空格就是解释。您可以从一个非常简单的jQuery插件开始:
(function($) {
$.fn.keyWatcher = function() {
return this.keydown(function(evt){
var $this = $(this);
var prevEvt = $this.data('prevEvt');
$this.trigger('multikeydown',[prevEvt,evt]);
$this.data('prevEvt',evt);
});
};
})(jQuery);
每当通常引发keydown
事件时,这将引发一个新事件(multikeydown
)。这将仅提供当前按键的keydown事件,或者如果有上一个事件,它也将提供该事件
用法可能类似于:
$(document).keyWatcher().bind('multikeydown',function(evt,prevKey,currKey){
alert('prevKey = ' + ((prevKey) ? String.fromCharCode(prevKey.keyCode) : '(none)'));
alert('currKey = ' + String.fromCharCode(currKey.keyCode));
});
实时示例(按JSFIDLE中右下角窗格上的键):
事件处理程序的prevKey
和currKey
参数中提供的事件包含原始的keydown
事件,因此您可以完全访问keyCode
、ctrlKey
和shiftKey
属性等。您可以从一个非常简单的jQuery插件开始:
(function($) {
$.fn.keyWatcher = function() {
return this.keydown(function(evt){
var $this = $(this);
var prevEvt = $this.data('prevEvt');
$this.trigger('multikeydown',[prevEvt,evt]);
$this.data('prevEvt',evt);
});
};
})(jQuery);
每当通常引发keydown
事件时,这将引发一个新事件(multikeydown
)。这将仅提供当前按键的keydown事件,或者如果有上一个事件,它也将提供该事件
用法可能类似于:
$(document).keyWatcher().bind('multikeydown',function(evt,prevKey,currKey){
alert('prevKey = ' + ((prevKey) ? String.fromCharCode(prevKey.keyCode) : '(none)'));
alert('currKey = ' + String.fromCharCode(currKey.keyCode));
});
实时示例(按JSFIDLE中右下角窗格上的键):
事件处理程序的
prevKey
和currKey
参数中提供的事件包含原始keydown
事件,因此您可以完全访问keyCode
,ctrlKey
和shiftKey
属性等。这可能不是最好的解决方案,但看看您是否可以使用它或它的一部分
这可能不是最好的解决方案,但看看您是否可以使用它或它的一部分
回答你的第二个问题,这是。回答你的第二个问题,这是。你好,我不确定你的代码-我如何显示它?或者可能不显示,只需比较:哪个变量包含旧值或新值?
var lastKey=undefined
与var lastKey相同
。代替我的注释,lastKey
var包含旧值,event.keyCode
包含新值;)您好,我不确定您的代码-我如何显示它?或者可能不显示,只需比较:哪个变量包含旧值或新值?var lastKey=undefined
与var lastKey相同
。代替我的注释,lastKey
var包含旧值,event.keyCode
包含新值;)1个小问题-事件
仅在IE中可用,因此此代码在FF中不起作用。将jQuery事件传递到处理程序中,使其跨浏览器。这样:1个小问题-事件
仅在IE中可用,因此此代码在FF中不起作用。将jQuery事件传递到处理程序中,使其跨浏览器。这样地: