如何知道键盘上最后按下的2键

时间:2013-04-09 07:52:23

标签: javascript jquery keyboard-events

是否可以知道键盘上按下了哪两个键? 我该怎么办? 我需要比较这些键,如果它们是相同的 - 做一些功能。
例如,如果有人按Enter键 - 这是第一个功能,如果在Enter后他按下SPACE-这是第二个功能。如果在ENTER之后他按下Ctrl键 - 这是第三个功能 所以,我希望只有这样才能做到 - 用当前和以前的键值制作一个2 var,然后制作一个 IF ELSE IF 函数
:-)
这是一种方式,我如何获得当前键值

$('#text').keydown(function(event) {
  $('#show').text(event.keyCode);
});

或者,更好的问题! (我现在看到了)
直接在这个编辑器中,按下双打空格后 - 它会在实时预览中跳转到另一行 这个怎么运作?我不确定,但我认为我需要的几乎是一样的 非常感谢你!

3 个答案:

答案 0 :(得分:1)

我认为存储最后一个按键并检查事件处理程序中的新旧keyCode是一种很好的方法。

$('#text').keydown((function() {
    var lastKey = undefined;
    return function(event) {
        // here you have both the old and new keyCode
        lastKey = event.keyCode;
    };
})());

另外,两个空格的东西是Markdown解释。

答案 1 :(得分:0)

你可以从非常简单的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);

每当通常引发multikeydown事件时,这将引发新事件(keydown)。这将只提供当前按键的keydown事件,或者如果有前一个事件,它也将提供该事件。

用法可能类似于:

$(document).keyWatcher().bind('multikeydown',function(evt,prevKey,currKey){
    alert('prevKey = ' + ((prevKey) ? String.fromCharCode(prevKey.keyCode) : '(none)')); 
   alert('currKey = ' + String.fromCharCode(currKey.keyCode));
});

实例(按jsfiddle右下方的按键):http://jsfiddle.net/9VMUy/1/

事件处理程序中prevKeycurrKey参数中提供的事件包含原始keydown个事件,因此您可以完全访问keyCode,{{1 }和ctrlKey属性等。

答案 2 :(得分:0)

这可能不是最好的解决方案,但看看你是否可以使用它或它的一部分

jsFiddle

var clicks = 0
$("#text").one("keypress", function () {
    clicks = 1;
    var KeyCode1 = event.keyCode;
    $('#result').text(KeyCode1);
    $("#text").one("keypress", function () {
        clicks = 2;
        var KeyCode2 = event.keyCode;
        $('#result').text(KeyCode1 + "\n" + KeyCode2);
    });
});