【发布时间】:2015-10-19 12:51:08
【问题描述】:
我有两个事件监听一个独特的字段:自动完成和 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/
无法测试,因为我找不到自动完成库。
【问题讨论】:
-
可以提供jsfiddle或者plunkr吗?
-
preventDefault()不会停止setTimeout()调用。逻辑一定有由其他原因引起的问题。 -
为什么 0 超时?仅仅在事件监听器中执行你的逻辑并防止事件冒泡 event.cancelBubble = true; 不会更好。 ?
-
你的 quicksearch() 方法在做什么?任何异步请求?您必须提供有关您的问题的更多背景信息,并在其背后分享最少的“逻辑”
标签: jquery ajax preventdefault quick-search onpaste