[英]setTimeout and e.preventDefault
我在一個唯一的字段上監聽兩個事件:自動完成和onPaste。 我的目標是在粘貼時調用另一個邏輯,並在鍵入時使用自動完成功能。
我以以下方式執行此操作:
$("#refno").on('paste', function (e) {
setTimeout(function () {
//some logic here
}, 0);
e.preventDefault();
})
function quickSearch(fieldName) {
//some other logic here
}
quickSearch('.open-invoices-quick-search');
問題是e.preventDefault(); 調用太早(阻止setTimeout中的代碼),或者調用得太晚,從而無法執行quickSearch函數。
知道如何處理這種情況嗎?
這是JSFddle: https ://jsfiddle.net/mk242zkz/1/
無法進行測試,因為我找不到自動完成庫。
您可以改用這種邏輯,但是風格含糊不清,恕我直言,您的預期行為是什么...
$("#refno").on('paste', function () {
$(this).autocomplete("disable").one('keydown', function () {
$(this).autocomplete("enable");
});
});
JqueryUI自動完成功能提供了一些備用方法,您可以在初始化期間和初始化之后對自動完成元素進行調用。
我確定您已經看過它,但請在此處查看API文檔以了解自動填充功能: 自動填充文檔
在粘貼事件內部,嘗試對自動完成對象使用disable方法。 不要忘記在以后重新啟用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.