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()方法在做什么?有异步请求吗?关于你的问题,你必须提供更多的背景,并尽可能少地分享你的“逻辑”