Javascript jqueryonchange设置超时
我希望在用户更改输入字段中的数量时触发某些代码。但当用户使用小上下箭头快速增加和减少数量时。比如按5次就到了5。我不想让代码触发5次。所以我想设置一个计时器。当检测到on change事件时,它将等待1秒或直到on change停止。然后获取最新的值 因此,有没有一种方法可以在短时间内检测到多个变化,而不需要任何东西。然后,如果发生了变化,并且在x之后不再发生变化,则表示时间。做点什么Javascript jqueryonchange设置超时,javascript,jquery,settimeout,Javascript,Jquery,Settimeout,我希望在用户更改输入字段中的数量时触发某些代码。但当用户使用小上下箭头快速增加和减少数量时。比如按5次就到了5。我不想让代码触发5次。所以我想设置一个计时器。当检测到on change事件时,它将等待1秒或直到on change停止。然后获取最新的值 因此,有没有一种方法可以在短时间内检测到多个变化,而不需要任何东西。然后,如果发生了变化,并且在x之后不再发生变化,则表示时间。做点什么 $("#quantity").on('change',function(){ setTimeout(f
$("#quantity").on('change',function(){
setTimeout(function(){
console.log("fired");
}, 1000);
});
我的代码只是在推迟解雇
那么我们如何才能做到这一点呢
在此处找到答案重复的问题
以下是我对输入框所做的操作,以防止在用户键入时触发频繁的更改:
var timeoutId = 0;
object.dom.input.addEventListener('input',function() {
clearTimeout(timeoutId);
// do stuff
// Fire our onchange event
if (this.delayOnChange > 0) {
timeoutId = setTimeout(function() { this.onchange() }, this.delayOnChange);
} else {
this.onchange();
}
}
},false);
这将检查是否设置了“delayOnchange”,以及是否延迟了“onchange”事件的触发器。每次对输入进行更改时,我们都会重置计时器clearTimeout,因此我们基本上是在等待用户在触发onchange之前停止快速键入。以下是我对输入框所做的操作,以防止在用户键入时触发频繁更改:
var timeoutId = 0;
object.dom.input.addEventListener('input',function() {
clearTimeout(timeoutId);
// do stuff
// Fire our onchange event
if (this.delayOnChange > 0) {
timeoutId = setTimeout(function() { this.onchange() }, this.delayOnChange);
} else {
this.onchange();
}
}
},false);
这将检查是否设置了“delayOnchange”,以及是否延迟了“onchange”事件的触发器。每次对输入进行更改时,我们都会重置计时器clearTimeout,因此我们基本上是在等待用户在触发onchange之前停止快速键入。下面的代码将延迟工作,直到上次“输入”事件发生后3秒。如果在超时执行其功能之前发生另一个“输入”事件,则通过clearTimeout取消上一个超时
let time = 0;
// On change paste keyup.
$('#address_1').on('input', function () {
// Reset the timer
clearTimeout(time);
time = setTimeout(function() {
// enter code here or a execute function.
doGeocode();
}, 3000);
});
下面的代码将延迟工作,直到上次“输入”事件发生后3秒。如果在超时执行其功能之前发生另一个“输入”事件,则通过clearTimeout取消上一个超时
let time = 0;
// On change paste keyup.
$('#address_1').on('input', function () {
// Reset the timer
clearTimeout(time);
time = setTimeout(function() {
// enter code here or a execute function.
doGeocode();
}, 3000);
});
NVM的人发现重复的问题和答案在这里抱歉,没有看到你的评论,直到张贴我的答案。也许这会有帮助…NVM的人发现重复的问题和答案在这里抱歉,没有看到你的评论,直到张贴我的答案。也许这会有帮助…这也行。我认为你们的工作更好,为长期打字的情况下,因为它不断刷新定时器,只要用户正在键入。另一个问题的答案是等一秒钟。10分钟后会接受,不管延迟时间有多长,都绝对是太长了。我发现任何超过1/2秒的事情都会让用户感到不舒服。这里的好处是,您可以根据不同的情况设置不同的延迟。如果他们正在单击上/下箭头,您可能会将时间缩短到300毫秒。当然,这还取决于被触发事件的作用以及它如何影响用户体验。这也是有效的。我认为你们的工作更好,为长期打字的情况下,因为它不断刷新定时器,只要用户正在键入。另一个问题的答案是等一秒钟。10分钟后会接受,不管延迟时间有多长,都绝对是太长了。我发现任何超过1/2秒的事情都会让用户感到不舒服。这里的好处是,您可以根据不同的情况设置不同的延迟。如果他们正在单击上/下箭头,您可能会将时间缩短到300毫秒。当然,它也将取决于被激发的事件所做的事情以及它如何影响用户体验。请考虑为发布的代码添加解释,以帮助提高对OPO的理解。请考虑为发布的代码添加解释,以帮助提高对OP的理解。