jquery自动建议和超时
我已经实现了一个为查询的自动建议找到的脚本。问题是,每次我按下一个键,他都在调用脚本。我试图添加一个超时,但它仍然制造麻烦。 代码如下:jquery自动建议和超时,jquery,autocomplete,settimeout,Jquery,Autocomplete,Settimeout,我已经实现了一个为查询的自动建议找到的脚本。问题是,每次我按下一个键,他都在调用脚本。我试图添加一个超时,但它仍然制造麻烦。 代码如下: <input type="text" onkeyup="lookup(this.value);"> function lookup(inputString) { var time = new Date().getTime(); var dummy_trigger = true; if(inputString.length == 0) {
<input type="text" onkeyup="lookup(this.value);">
function lookup(inputString) {
var time = new Date().getTime();
var dummy_trigger = true;
if(inputString.length == 0) {
$('#suggestions').fadeOut(); // Hide the suggestions box
} else {
function timepassed(){
now = new Date().getTime() - time;
if(now > 3000 && dummy_trigger){
alert("search");
dummy_trigger = false;
}
}
setInterval(timepassed, 1000);
}
}
函数查找(inputString){
var time=new Date().getTime();
var虚拟_触发器=真;
如果(inputString.length==0){
$(“#建议”).fadeOut();//隐藏建议框
}否则{
函数timepassed(){
现在=新日期().getTime()-时间;
如果(现在>3000&&dummy\u触发器){
警报(“搜索”);
伪触发=假;
}
}
设置间隔(时间经过,1000);
}
}
有什么想法吗?谢谢 由于您已经在使用jQuery,请添加自动完成插件,或者使用jQuery UI替换该插件
这里是该插件的链接,以及关于jQuery UI转换的注释。它还有关于插件的说明:尽管其他人通过发送给您使用自动完成插件来回答这个问题,但这并不能真正回答“如何使脚本不会在每次按键时启动?” 为什么这很重要? 零延迟对于本地数据来说是有意义的(响应性更强),但是可以为远程数据产生大量负载,而响应性较差。如果每次击键后都启动搜索,那么用户只需启动13次搜索来搜索单词“菊花”,这时脚本应该等到用户不知道如何键入单词的其余部分,然后启动搜索 尽管大多数自动完成/自动建议脚本都有一个超时变量 下面是如何实现您自己的计时器,它使用jQuery等待用户:
<input type="text" id="query" />
发生的情况如下:我们将
setTimeout
计时器分配给一个变量,该变量必须在keyup
函数上方声明,并在每次keyup
触发时检查该变量。如果有一个现有的setTimeout
正在进行,请清除它,这样它就不会启动search()
函数,并创建一个新的计时器集,以等待指定的毫秒数(在我的示例中为1000)。jQuery UI有一个自动完成。。。我建议你用那个-
$(document).ready(function() {
var timer,
$suggestions = $('#suggestions'),
$search_box = $('#query');
$search_box.keyup(function() {
if (timer) {
// There is a running timer from a previous keyup
// Clear this timer so we don't have overlap
clearTimeout(timer);
}
if (this.length == 0) {
$suggestions.fadeOut();
} else {
timer = setTimeout(function() {
search();
}, 1000);
}
});
function search() {
var query = $search_box.val();
alert('searching for ' + query);
}
});