jquery检测键码首先按或第二次按

时间:2015-06-17 08:59:19

标签: jquery

是否可以检测到第一次按或第二次按?例如,像某些视频播放器一样,第一次按空格键会暂停,再按一次即可播放。所以我很奇怪是否有可能使用jquery做到这一点?

if (e.keyCode == 32) { //space bar

}

4 个答案:

答案 0 :(得分:1)

您无需检测按键的次数,而是在每次按下时检查视频的状态并进行更改。假设您使用的是HTML5视频,请尝试以下操作:

$('#myElement').keypress(function(e) {
    var video = $('#video')[0];
    if (e.keyCode == 13) {
        if (video.paused)
            video.play();
        else
            video.pause();
    }
});

答案 1 :(得分:0)

你不需要jQuery来做到这一点。你可以创建一个布尔变量:

var hasFirstPress = false;

然后

if (e.keyCode == 32) { //space bar
    hasFirstPress = true;
}

答案 2 :(得分:0)

你可以有一面旗帜并检查!保持测试区域,目前我正在使用<textarea>

$(function () {
  keyPresses = {};
  $("#test").keydown(function (e) {
    keyPresses[e.keyCode] = (keyPresses[e.keyCode] == undefined) ? 1 : keyPresses[e.keyCode] + 1;
    $(this).val($(this).val() + "Key pressed " + e.keyCode + " for " + keyPresses[e.keyCode] + " time.\n");
    return false;
  });
});
textarea {font-family: Monaco, MonacoB, MonacoB2, Consolas; width: 90%; height: 500px; resize: none;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<textarea id="test"></textarea>

答案 3 :(得分:0)

感谢所有建议,我现在得到了自己的答案。

var lastKeyPress = 0;
$(document).keyup(function (e) {
    if (e.keyCode == 32 && lastKeyPress === 1) { // second times
        alert("pause");
        lastKeyPress = 0;
    } else if (e.keyCode == 32 && lastKeyPress === 0) { // first times
        alert("play");
        lastKeyPress = 1;
    }
});