setTimeout and e.preventDefault



我有两个事件监听一个唯一的字段:autocomplete和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.p preventdefault ();或者太早(防止setTimeout的代码),或者太晚,允许quickSearch函数被执行。

你知道如何处理这种情况吗?

这是JSFddle: https://jsfiddle.net/mk242zkz/1/

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

您可以使用此逻辑,但样式模糊的是什么是您期望的行为…

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

-jsFiddle -

JqueryUI autocomplete提供了一些stock方法,您可以在初始化期间和之后调用autocomplete元素。

我相信你已经看到了它,但看看这里的API文档自动完成:自动完成文档

在粘贴事件中尝试在自动完成对象上使用disable方法。

相关内容

  • 没有找到相关文章