2012-06-13 128 views
0
$(document).keydown(function(e){ 
     if (e.keyCode == 37) { 
      move("West"); 
      return false; 
     } 
     if (e.keyCode == 38) { 
      move("North"); 
      return false; 
     } 
     if (e.keyCode == 39) { 
      move("East"); 
      return false; 
     } 
     if (e.keyCode == 40) { 
      move("South"); 
      return false; 
     } 
    }); 

     function move(newDirection) 
     { 
      var direction = newDirection; 

      $.ajax({ 
       type: "POST", 
       url: "ajax/map.php", 
       data: { direction: direction }, 
       success: function(data) { 
        $('#content').html(data); 
       } 
      }); 
     } 

如果我長時間保持左鍵不放,呼叫會不停地來,並且它(不會停止)我在尋找的是做一些延遲,或者只需在按下按鍵時撥打一個電話(或者在按鍵被釋放時立即停止)。但我不知道如何。對解決方案有何建議?停止阿賈克斯呼叫

回答

1

您可以將​​事件更改爲keyup,因此只有當您停止按下按鈕時纔會觸發該事件。 會有幫助嗎?

您也可能會發現這個線程幫助: Abort Ajax requests using jQuery

我做了一個例子: http://jsfiddle.net/kdDwd/2/

+0

我寧願它停止呼叫時,密鑰被釋放(但立即沒有更多的電話)。既然如果我堅持一下,角色會繼續前進,某種延遲可能會有所幫助?或者立即停止。 – John

+0

很好的例子,但它只能使用一次。然後,當我嘗試時,我不能再移動。 – John

+0

考慮到在該示例中,單擊很可能不會做任何事情,因爲在獲取ajax響應之前腳本將被中止。 – iMoses