繁体   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