1
我正在執行關鍵字或粘貼上的Ajax請求。問題在於,當用戶使用Control-V進行粘貼時,會發生兩個Ajax請求 - 一個用於粘貼,一個用於鍵入。關鍵字或粘貼上的Ajax
$("#my-form").bind('keyup paste', function(e) {...}
什麼是綁定在keyup或粘貼上的好方法?
我正在執行關鍵字或粘貼上的Ajax請求。問題在於,當用戶使用Control-V進行粘貼時,會發生兩個Ajax請求 - 一個用於粘貼,一個用於鍵入。關鍵字或粘貼上的Ajax
$("#my-form").bind('keyup paste', function(e) {...}
什麼是綁定在keyup或粘貼上的好方法?
您可以使用setTimeout
/clearTimeout
延遲事件,因此它只觸發一次。
$("#my-form").bind('keyup paste', function(e) {
clearTimeout($(this).data('timeout'));
$(this).data('timeout', setTimeout(function(){
// your code
}, 200));
});
因爲你得到的'keyup'事件觸發時用戶貼,你爲什麼需要綁定'paste'分開? – lanzz 2012-07-11 20:23:33
@lanzz右鍵單擊 - >粘貼 – TheZ 2012-07-11 20:23:58
理想情況下,您可以存儲內容,然後檢查每次事件觸發時是否更改了內容,這樣它只會運行一次。你可以綁定兩個(或更多)事件,即使連續兩次觸發,只有第一個會看到更改並運行。 – TheZ 2012-07-11 20:29:52