1

我有两个事件监听一个独特的字段:自动完成和 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/

无法测试,因为我找不到自动完成库。

4

2 回答 2

1

您可以改用这种逻辑,但风格模糊恕我直言,您的预期行为是什么......

$("#refno").on('paste', function () {
    $(this).autocomplete("disable").one('keydown', function () {
        $(this).autocomplete("enable");
    });    
});

-jsFiddle-

于 2015-10-19T13:32:05.303 回答
0

JqueryUI 自动完成提供了一些常用方法,您可以在初始化期间和初始化后调用自动完成元素。

我确定您已经看过它,但请查看此处的 API 文档以了解自动完成功能: Autocomplete Docs

在您的粘贴事件中,尝试在您的自动完成对象上使用 disable 方法。之后不要忘记重新启用它。

于 2015-10-19T13:33:28.010 回答