簡體   English   中英

setTimeout和e.preventDefault

[英]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");
    });    
});

-jsFiddle-

JqueryUI自動完成功能提供了一些備用方法,您可以在初始化期間和初始化之后對自動完成元素進行調用。

我確定您已經看過它,但請在此處查看API文檔以了解自動填充功能: 自動填充文檔

在粘貼事件內部,嘗試對自動完成對象使用disable方法。 不要忘記在以后重新啟用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM