Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery setTimeout和e.preventDefault_Jquery_Ajax_Preventdefault_Quick Search_Onpaste - Fatal编程技术网

Jquery setTimeout和e.preventDefault

Jquery setTimeout和e.preventDefault,jquery,ajax,preventdefault,quick-search,onpaste,Jquery,Ajax,Preventdefault,Quick Search,Onpaste,我在一个独特的字段上监听两个事件:自动完成和粘贴。 我的目标是在粘贴时调用另一个逻辑,并在键入时使用自动完成 我是这样做的: $("#refno").on('paste', function (e) { setTimeout(function () { //some logic here }, 0); e.preventDefault(); }) function quickSearch(fieldName) { //some other lo

我在一个独特的字段上监听两个事件:自动完成和粘贴。 我的目标是在粘贴时调用另一个逻辑,并在键入时使用自动完成

我是这样做的:

$("#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函数

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

以下是JSFDLL:


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

您可以使用此逻辑,但请告诉我您的预期行为

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

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

我相信您已经看过了,但请查看此处的API文档以获得自动完成:

在粘贴事件内部,尝试对自动完成对象使用禁用方法。
不要忘记在之后重新启用它。

您可以提供JSFIDLE或plunkr吗?
preventDefault()
不会停止
setTimeout()
调用。逻辑必须有其他原因导致的问题。为什么0超时?在事件监听器中执行逻辑并防止事件冒泡,这样做不是更好吗?cancelBubble=true@Bardo,你的quicksearch()方法在做什么?有异步请求吗?关于你的问题,你必须提供更多的背景,并尽可能少地分享你的“逻辑”