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事件传递到处理程序中,使其跨浏览器。这样地: