2012-07-11 17 views
1

我正在執行關鍵字或粘貼上的Ajax請求。問題在於,當用戶使用Control-V進行粘貼時,會發生兩個Ajax請求 - 一個用於粘貼,一個用於鍵入。關鍵字或粘貼上的Ajax

$("#my-form").bind('keyup paste', function(e) {...} 

什麼是綁定在keyup或粘貼上的好方法?

+1

因爲你得到的'keyup'事件觸發時用戶貼,你爲什麼需要綁定'paste'分開? – lanzz 2012-07-11 20:23:33

+1

@lanzz右鍵單擊 - >粘貼 – TheZ 2012-07-11 20:23:58

+2

理想情況下,您可以存儲內容,然後檢查每次事件觸發時是否更改了內容,這樣它只會運行一次。你可以綁定兩個(或更多)事件,即使連續兩次觸發,只有第一個會看到更改並運行。 – TheZ 2012-07-11 20:29:52

回答

5

您可以使用setTimeout/clearTimeout延遲事件,因此它只觸發一次。

$("#my-form").bind('keyup paste', function(e) { 
    clearTimeout($(this).data('timeout')); 
    $(this).data('timeout', setTimeout(function(){ 
     // your code 
    }, 200)); 
}); 

DEMO:http://jsfiddle.net/4b7y5/