2014-04-01 78 views
2

如何使按Ctrl +V或粘貼不是兩次觸發keyup功能?按Ctrl + V(粘貼)觸發jQuery的KEYUP功能進行二次

這對我來說是一個問題,因爲我提供了一個自動完成功能,當我粘貼到文本框中時,它顯示兩次相同的數據。我希望現在更有意義。

編輯:

好球員,我已經找到了如何通過$('#this-id').bind('paste', function() {});

但現在另一個跟進的問題是如何將其與keyup結合起來,這樣,當paste檢測按Ctrl + V被按下,keyup不會再觸發。

+3

爲什麼這是你的問題?畢竟,你*發佈了兩個密鑰(V和CTRL)...... – ThiefMaster

+2

你對這個問題有任何試驗嗎?實際上這個問題沒有任何意義。 – Jai

+0

爲什麼不使用'keydown'來捕獲'Ctrl'鍵和'keyup'來捕獲'V'鍵? – CodingIntrigue

回答

6

好球員,感謝大家的答案,但我經過一些閱讀,很多博客這樣說:「如果你實現一個自動完成的功能,不依賴於‘KEYUP’功能

所以我改變了我的代碼$('#this-id').bind('input', function() {});

和它的工作,我沒有現在擔心粘貼或其他任何東西。我希望這對其他人也有幫助。

0

你可以試試這個

$(window).on('keyup', function (event) { 
    if (!event.ctrlKey) { 
     /* here your code for all keys besides CTRL ;-) */ 
    } 
}); 
+0

所以你的代碼將不會有**兩個**鍵盤。 – Jai

+0

我明白了你的觀點,但我不想過濾Ctrl鍵,我只希望它被檢測一次,因爲我仍然希望CTRL + V功能可以工作,而不是兩次。除了你的答案,還有什麼辦法來檢測下一個按鍵是否是'V'? – user2881063

+0

我試過這個,我的自動完成功能不適用於此。 – user2881063

0

你可以使用下劃線的反跳,以用於讀取keyup事件設置延遲。

看到工作代碼:

JSFiddle

JS:

var count = 0; 
function lookup() { 
    $('div#test').html($('input.text').val()); 
    count++; 
    $('div#count').html(count); 
} 

$(document).keyup(_.debounce(lookup, 250, true)); 

HTML:

<div> 
    <input type="text"> 
</div> 

Input: <div id="test"></div> 
Keyup Count: <div id="count"></div> 

underscore.js來自:

http://documentcloud.github.com/underscore/underscore-min.js

相關問題