setTimeout 和 e.preventDefault
setTimeout and e.preventDefault
我有两个事件监听一个独特的字段:autocomplete 和 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 文档以了解自动完成:
Autocomplete Docs
在您的粘贴事件中尝试对您的自动完成对象使用禁用方法。
之后不要忘记重新启用它。
我有两个事件监听一个独特的字段:autocomplete 和 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 文档以了解自动完成: Autocomplete Docs
在您的粘贴事件中尝试对您的自动完成对象使用禁用方法。 之后不要忘记重新启用它。