jQuery多次单击,等待用户停止单击

jQuery多次单击,等待用户停止单击,jquery,ajax,Jquery,Ajax,我有一个加号按钮来增加文本字段中的数字。当文本字段值更改时,将触发一个#updateCartButton,该按钮通过一些其他ajax/php代码更新表单 我遇到的问题是,在快速会话中单击加号按钮5次也会触发#updateCartButton5次。我希望在用户停止单击加号按钮时触发#updateCartButton,可能在500毫秒或之后 我试图像这样解决它setTimeout,但它没有解决问题: setTimeout(function () { $('#updateCartButto

我有一个加号按钮来增加文本字段中的数字。当文本字段值更改时,将触发一个
#updateCartButton
,该按钮通过一些其他ajax/php代码更新表单

我遇到的问题是,在快速会话中单击加号按钮5次也会触发
#updateCartButton
5次。我希望在用户停止单击加号按钮时触发
#updateCartButton
,可能在500毫秒或之后

我试图像这样解决它
setTimeout
,但它没有解决问题:

  setTimeout(function () {
    $('#updateCartButton').trigger('click'); // trigger update button
  }, 500);
有没有简单的解决办法

$(函数(){
$('.plus')。在('click',function()上{
var oldVal=$('input').val();
var newVal=(parseInt($('input').val(),10)+1);
$('input').val(newVal);
$('updateCartButton')。触发器('click');//触发器更新按钮
});
});

+

您可以使用
设置超时
仅在最后一次单击时调用更新,通过使用
clearTimeout
重置之前所有单击的超时

$(函数(){
var点击超时;
$('.plus')。在('click',function()上{
clearTimeout(点击超时);
var oldVal=$('input').val();
var newVal=(parseInt($('input').val(),10)+1);
$('input').val(newVal);
单击超时=设置超时(函数(){
$('#output').text($('input').val());//替换为更新代码
}, 500);
});
});

+

上次单击时更新:1设置包含超时的变量。如果要覆盖它,只需调用
clearTimeout()

$(函数(){
var超时;
$('.plus')。在('click',function()上{
var oldVal=$('input').val();
var newVal=(parseInt($('input').val(),10)+1);
$('input[type=“text”]”).val(newVal);
clearTimeout(超时);
超时=设置超时(函数(){
$('updateCartButton')。触发器('click');//触发器更新按钮
}, 500);
});
$('#updateCartButton')。单击(函数(){
$('body').append('delayed button clicked
')) }); });

$(function() {
var timeout;

  $('.plus').on('click', function() {
    var oldVal = $('input').val();
    var newVal = (parseInt($('input').val(),10) + 1);

    $('input[type="text"]').val(newVal);

    clearTimeout(timeout);

    timeout = setTimeout(function () {
      $('#updateCartButton').trigger('click'); // trigger update button
    }, 500);
  });

   $('#updateCartButton').click(function() {
        $('body').append('delayed button clicked <br/>')
   });
});