1

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

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

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

4

3 回答 3

1

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

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

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

于 2013-04-09T07:59:32.103 回答
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事件,因此您可以完全访问keyCodectrlKeyshiftKey属性等。

于 2013-04-09T08:29:03.670 回答
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);
    });
});
于 2013-04-09T08:30:23.390 回答