Javascript jqueryonchange设置超时

Javascript jqueryonchange设置超时,javascript,jquery,settimeout,Javascript,Jquery,Settimeout,我希望在用户更改输入字段中的数量时触发某些代码。但当用户使用小上下箭头快速增加和减少数量时。比如按5次就到了5。我不想让代码触发5次。所以我想设置一个计时器。当检测到on change事件时,它将等待1秒或直到on change停止。然后获取最新的值 因此,有没有一种方法可以在短时间内检测到多个变化,而不需要任何东西。然后,如果发生了变化,并且在x之后不再发生变化,则表示时间。做点什么 $("#quantity").on('change',function(){ setTimeout(f

我希望在用户更改输入字段中的数量时触发某些代码。但当用户使用小上下箭头快速增加和减少数量时。比如按5次就到了5。我不想让代码触发5次。所以我想设置一个计时器。当检测到on change事件时,它将等待1秒或直到on change停止。然后获取最新的值

因此,有没有一种方法可以在短时间内检测到多个变化,而不需要任何东西。然后,如果发生了变化,并且在x之后不再发生变化,则表示时间。做点什么

$("#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的理解。