javascript - 堆栈溢出的 ajax 标签搜索字段背后的算法是什么

标签 javascript jquery

我想做一个像 stack overflow 的标签搜索框那样的 ajax 自动完成字段(用于添加喜欢的标签和为你的问题添加标签)。我曾经在每次按键时调用 ajax,但我认为它效率不高。

我发现堆栈溢出做得很好。我猜它只会在键启动并且经过一段时间后才调用 ajax。然后我写了这些行来测试:

$("#a").keyup(function(){
    clearTimeout(c);
    var c=setTimeout(alert("keyup and 0.5s have passed"),500);
})

它会在按下键后和 0.5 秒后发出警报,但它会在按下键时多次发出警报。 clearTimeout() 是否应该停止执行 setTimeout() ?为什么它不起作用?执行此操作的正确方法是什么?

最佳答案

c 是一个局部变量,一旦函数返回,它的值就会丢失。尝试这样的事情:

var timeoutId = null;

$("#a").keyup(function(){
    clearTimeout(timeoutId);
    timeoutId = setTimeout(alert("keyup after 0.5s"),500);
})

关于javascript - 堆栈溢出的 ajax 标签搜索字段背后的算法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8687153/

相关文章:

javascript - 检测特定文本框是否具有焦点

javascript - 我想在 JavaDoc 中添加 JavaScript

javascript - 点击函数 Jquery 计时

jquery - 使用 jquery.validator.addMethod 时允许使用破折号的正确正则表达式是什么?

c# - 将 xml 嵌入 json

javascript - webapp2 cookie 检索不完整

javascript - Sequelize 中是一对一还是多对一?

javascript - SetInterval 方法仅在 onclick 事件上执行一次

javascript - 如何使用 .serialize() 排除类的输入

javascript - Mentio JS 菜单被添加到页面底部