Jquery 实时搜索,一旦从输入中删除内容,就不会退出 if 语句
Jquery live search, doesnt exit if statement once content is removed from the input
我目前正在进行网络开发人员培训的期末团队项目。我确实为我们的应用程序编写了一个实时搜索代码,它按预期工作,直到我从输入中删除内容。代码有时会保留在 if 语句中以删除追加。我不明白为什么。有人知道吗?
这是我的代码:
$(function(){
var check = 0;
$("#getQuestions").on("keyup", function(){
check++;
var inputLength = $("#getQuestions").val().length;
if (check === 3 || inputLength === 0) {
$(".liveSearch").remove();
}
if (inputLength >= 1) {
if(check === 3 ){
$.ajax({
type: "POST",
url: "/getQuestions",
data: {"question": $("#getQuestions").val()}
}).done(function(response){
for (var i = 0; i < response.length; i++) {
var id = response[i].id;
var title = response[i].title;
$("#listQuestions").append('<div class="liveSearch"><a href="/question?id='+id +'""' + '>' + title + '</a></div>' );
}
check = 0;
});
}
}
});
});
感谢您的帮助。
祝你有愉快的一天。
您使用计数变量似乎使事情过于复杂。现在你的 ajax 调用只会在每 3 个按键时触发(这意味着例如按 shift 3 次会触发它或按住一个字母只会增加 1 个计数)。
通过使用按键和计时器,您将获得以下代码:
$(function(){
var timer;
$("#getQuestions").on("keypress", function(){
if ($("#getQuestions").val().length == 0) {
$(".liveSearch").remove();
}
if ($("#getQuestions").val().length > 0) {
clearTimeout(timer);
timer = setTimeout(function() {
$(".liveSearch").remove();
$.ajax({
type: "POST",
url: "/getQuestions",
data: {"question": $("#getQuestions").val()}
}).done(function(response){
for (var i = 0; i < response.length; i++) {
$("#listQuestions").append('<div class="liveSearch"><a href="/question?id=' + response[i].id + '">' + response[i].title + '</a></div>');
}
});
}, 1000);
}
});
});
我目前正在进行网络开发人员培训的期末团队项目。我确实为我们的应用程序编写了一个实时搜索代码,它按预期工作,直到我从输入中删除内容。代码有时会保留在 if 语句中以删除追加。我不明白为什么。有人知道吗?
这是我的代码:
$(function(){
var check = 0;
$("#getQuestions").on("keyup", function(){
check++;
var inputLength = $("#getQuestions").val().length;
if (check === 3 || inputLength === 0) {
$(".liveSearch").remove();
}
if (inputLength >= 1) {
if(check === 3 ){
$.ajax({
type: "POST",
url: "/getQuestions",
data: {"question": $("#getQuestions").val()}
}).done(function(response){
for (var i = 0; i < response.length; i++) {
var id = response[i].id;
var title = response[i].title;
$("#listQuestions").append('<div class="liveSearch"><a href="/question?id='+id +'""' + '>' + title + '</a></div>' );
}
check = 0;
});
}
}
});
});
感谢您的帮助。
祝你有愉快的一天。
您使用计数变量似乎使事情过于复杂。现在你的 ajax 调用只会在每 3 个按键时触发(这意味着例如按 shift 3 次会触发它或按住一个字母只会增加 1 个计数)。
通过使用按键和计时器,您将获得以下代码:
$(function(){
var timer;
$("#getQuestions").on("keypress", function(){
if ($("#getQuestions").val().length == 0) {
$(".liveSearch").remove();
}
if ($("#getQuestions").val().length > 0) {
clearTimeout(timer);
timer = setTimeout(function() {
$(".liveSearch").remove();
$.ajax({
type: "POST",
url: "/getQuestions",
data: {"question": $("#getQuestions").val()}
}).done(function(response){
for (var i = 0; i < response.length; i++) {
$("#listQuestions").append('<div class="liveSearch"><a href="/question?id=' + response[i].id + '">' + response[i].title + '</a></div>');
}
});
}, 1000);
}
});
});