2011-12-30 57 views

回答

2

嘗試keyup而不是keydown,或者建立一個計時器。

這裏有一個快速和骯髒的計時器我敲開了這應該給你的,你需要做的是一個好主意:http://jsfiddle.net/Grimdotdotdot/bnM4T/6/

+0

嘗試了鍵控 - 仍然觸發太多qcickly。有關如何構建計時器的任何建議?還是新的JavaScript!謝謝 – 2011-12-30 11:03:20

+0

就像這樣:http://jsfiddle.net/Grimdotdotdot/bnM4T/6/ – 2011-12-30 11:27:41

+0

謝謝!完美工作 – 2011-12-30 11:35:43

-1
$(document).bind('keydown', 'right', function(){ 
    window.setTimeout(function() 
    { 
      console.log('fired'); 
      display_info(); 
    }, 1000);//milliseconds 
}); 
+1

這不僅僅是相同的通話次數,而是一秒鐘後? – 2011-12-30 11:31:31

0

我想如果任何人在遇到此問題的補充這一點。 你聽到的問題聽起來完全像我所擁有的。 如果我綁定了多個快捷方式事件,則每個快捷方式執行的時間少於文檔中快捷方式綁定的總數量。我有這樣的事情:

$(document).bind('keydown', 'alt+a', function() { 
    alert('A Pressed'); 
}); 
$(document).bind('keydown', 'alt+b', function() { 
    alert('B Pressed'); 
}); 
$(document).bind('keydown', 'alt+c', function() { 
    alert('C Pressed'); 
}); 

對於每個快捷方式綁定,我會得到警報兩次。我解決這個問題的方法是解開快捷方式並添加一個方法來處理警報和解除綁定。

$(document).ready(function() { 
    $(document).bind('keydown.alt+a', 'alt+a', function() { 
     alertAndUnbind('A', 'alt+a'); 
    }); 
    $(document).bind('keydown.alt+b', 'alt+b', function() { 
     alertAndUnbind('B', 'alt+b'); 
    }); 
    $(document).bind('keydown.alt+c', 'alt+c', function() { 
     alertAndUnbind('C', 'alt+c'); 
    }); 
}); 
function alertAndUnbind(letter, shortcut) { 
    alert(letter); 
    $(document).unbind('keydown.' + shortcut, shortcut); 
}); 

以這種方式使用解除綁定允許我只執行一次的每個快捷方式的代碼,而每次按下快捷鍵時保留快捷鍵功能,並保持我的代碼相對乾燥。