[英]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");
});
});
JqueryUI自动完成功能提供了一些备用方法,您可以在初始化期间和初始化之后对自动完成元素进行调用。
我确定您已经看过它,但请在此处查看API文档以了解自动填充功能: 自动填充文档
在粘贴事件内部,尝试对自动完成对象使用disable方法。 不要忘记在以后重新启用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.