gpt4 book ai didi

javascript - 中断jQuery延迟函数

转载 作者:行者123 更新时间:2023-11-30 13:38:23 24 4
gpt4 key购买 nike

我正在研究一种自动完成功能的方法,以通过表单的步骤进行导航。这是当输入 5 个字符时,它会移动到下一个元素的代码。我的延迟效果很好,但如果输入 5 个字符后字符被删除,我没有办法阻止它完成。无论输入发生什么变化,它都会在那之后立即触发焦点。

有什么想法吗?

var delay = (function(){
var timer = 0;
return function(callback, ms) {
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();

$('input').keyup(function(){
if($(this).val().length == 5) {
delay(function(){ $("#saveForm2").focus(); }, 2000 );
}
})

最佳答案

如果您正在寻找一种将超时实例与元素相关联的简单方法,请考虑使用 jQuery 的 .data() 方法。

像这样。

$('input').keyup(function() {
var $th = $(this);
var data = $th.data();
if(data.timeout === undefined) {
data.timeout = null;
}
if ($th.val().length == 5) {
clearTimeout(data.timeout);
data.timeout = setTimeout(function() {
$("#saveForm2").focus();
}, 2000);
} else {
clearTimeout(data.timeout);
}
});​

我认为您使用闭包的方式不太正确。我认为您还需要将处理程序分配给闭包内的元素,因此它具有对该实例的本地引用。

编辑:通过较早存储的对 data() 的引用提高了一些效率。

关于javascript - 中断jQuery延迟函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3604758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com