2010-06-13 41 views
2

我製作了一個滑塊,使用左右箭頭鍵移動幻燈片,但當按下快速鍵時會出現一些錯誤,我想知道是否可以在一秒鐘內限制按下的次數。你可以在這裏看到:[鏈接刪除]如何限制按鍵在jQuery滑塊上的頻率?

$('#slider-nav div').click(function() { 
    $('#slider-nav div').removeClass('selected').addClass(''); 
    $('#slider-nav div:eq('+($.jcarousel.intval($(this).text())-1)+')').addClass('selected'); 
}) 

// Allow left and right keys to control slider 
$(document.documentElement).keypress(function(e) { 
    var code = (e.keyCode ? e.keyCode : e.which); 
    var direction = null; 

    // handle cursor keys 
    if (code == 37) { // left key 
     direction = 'prev'; 
    } 
    else if (code == 39) { // right key 
     direction = 'next'; 
    } 

    if (direction != null) { 
     $('#slider-nav div.selected')[direction]().click(); 
    } 
}); 
+0

歡迎來到SO!你的意思是「它會有點bug」?有什麼問題? – 2010-06-13 16:59:48

+0

基本上滑動動畫無法跟上按鍵。 – Jaybuz 2010-06-13 17:10:18

+0

您應該使用'keydown'事件而不是'keypress'來達到這個目的,原因如下:其一,您只需使用事件的'keyCode'屬性來獲得統一且明確的瀏覽器支持(在您當前的解決方案中,鍵入百分號將點燃左箭頭鍵)。二,自動重複按鍵會觸發在IE中重複'keydown'事件,但不是'keypress'事件。 – 2010-06-14 00:47:23

回答

1

您可以添加一個全局變量,然後當按下鍵將其設置爲getTime(),然後在下次調用,檢查是否在設定的時間差目前時間少於1000.

var checkTime = 0; 
function onKeyPress(){ 
    var currentTime = new Date() 
    if((currentTime.getTime() - checkTime) > 1000){ 
     //do stuff; 

     checkTime =currentTime.getTime(); 
    } 
} 
+1

這工作,非常感謝你!無論如何,我仍然會接受更好的解決方案。 :) – Jaybuz 2010-06-13 17:39:24