所以,每当用户停止在字段getData.php
中输入3秒钟时,我就会将代码发送到页面.search
(我认为已完成打字)。但是我注意到如果说用户类型较慢(比如每秒1个字母),或者在大约1秒后开始输入,它会为每个输入的字母发送更多的Ajax请求(大约15/20,具体取决于多少个字母) 。而不是1个请求整个单词。
这是我的代码:
$(".search").on('input', function() {
$(".search").keyup(function() {
timer = setTimeout(function() {
$.ajax({
type: "POST",
url: "getData.php",
data: {search: $(".search").val()}
}).done(function(data) {
$(".searchReturn").text(data);
$(".loading").hide();
});
$(".searchReturn").fadeIn(750);
}, 3000);
$(".search").keydown(function() {
clearTimeout(timer);
});
$(".loading").fadeIn(250);
});
$(".searchReturn").hide()
});
EDIT FOR BETTER UNDERSTANDING
说我打字"测试"在现场,然后我输入" test"再次1s然后进行" testtest"。当我这样做时,我得到了55个Ajax POST。我问的是,我该如何阻止这种情况发生。
答案 0 :(得分:0)
添加clearTimeout(计时器);在keyup处理程序
$(".search").on('input', function() {
$(".search").keyup(function() {
clearTimeout(timer);
timer = setTimeout(function() {
$.ajax({
type: "POST",
url: "getData.php",
data: {search: $(".search").val()}
}).done(function(data) {
$(".searchReturn").text(data);
$(".loading").hide();
});
$(".searchReturn").fadeIn(750);
}, 3000);
$(".loading").fadeIn(250);
});
$(".searchReturn").hide();
});