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/>')
});
});