【发布时间】:2020-05-04 20:32:16
【问题描述】:
我问了一个问题How to fire Ajax request after user inactivity in 1.5 seconds,关于如何在用户完成输入后更新用户数据,而不是在每个键上,我被提到了一篇他们推荐使用 javascript debounce 的帖子,我喜欢 How to implement debounce fn into jQuery keyup event? 但我可以'似乎没有找到一种方法将其实现到我的代码中,这就是我提到的解决方案所说的我应该做的事情
$('input').keyup(debounce(function(){
var $this=$(this);
//alert( $this.val() );
var n1 = $this.val();
var n2 = $('#n2').val();
var n3 = $('#n3').val();
var calc = n1 * n2 * n3;
alert(calc);
},500));
我的功能完美运行,但我不希望它每次都运行,所以我不知道在这种情况下如何实现去抖动,这是我要添加去抖动的代码
//cart.php
<input type="text" class="count_cart content_to_cart oninput qty-remove-defaults" onkeyup="setcart(this)" onkeydown="autoSave(this)" id="updates_486" >
function autoSave(e){ //JS where I want to implement debounce
setTimeout(function(){
var getsizes_response = $(e).attr("id");
var getsave_response_quantity = $("#"+getsizes_response).val();
$.ajax({
type: "POST",
url: "functions.php",
data: {getsizes_response: getsizes_response, getsave_response_quantity: getsave_response_quantity},
cache: false,
timeout: 5000,
success: function(r){
$("#ajax_responses_get_positioner").show();
$("#ajax_responses_get_positioner").html(r);
},
error: function(){
$("#ajax_responses_get_positioner").show();
$("#ajax_responses_get").html("Error saving order, please reload page and try again.");
$("#ajax_responses_get").css({'background': 'red', 'display': 'block'});
$("#ajax_responses_get_positioner").delay(6000).fadeOut("fast");
}
});
}, 1500);
}
【问题讨论】:
标签: javascript jquery debounce