jquery - StackOverflow 中标签的 AutoSuggest 功能如何避免每次击键时进行查询

标签 jquery autocomplete autosuggest

我正在尝试使用 Jquery 实现类似的功能,例如本网站文本区域下方可用标签的自动建议功能。我试图弄清楚在几次击键之后而不是每次击键之后如何发送请求。我正在使用“keyup”事件来触发我的应用程序上的请求。我意识到这可能会导致服务器命中过多并可能影响性能。

如果有人能解释我如何通过不在每个 keyup 上运行查询来实现 stackOverflow 所做的事情,那就太棒了。

最佳答案

我的一个 Windows 应用程序中有类似的功能。当用户键入字符时,计时器会以 1 秒的间隔启动。在 Tick 事件中,开始搜索。如果用户再次键入,计时器将重新启动。因此,仅当键盘闲置超过一秒时才会执行搜索。

简短示例(使用 C# 编写,但很容易理解):

public partial class Form1 : Form
{
    private System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();

    public Form1()
    {
        InitializeComponent();

        timer.Interval = 1000;
        timer.Tick += new EventHandler(timer_Tick);
    }

    void timer_Tick(object sender, EventArgs e)
    {
        timer.Stop();

        // Do search, or what ever you want to do
        Console.WriteLine("Searching...");
    }

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (timer.Enabled)
        {
            timer.Stop();
        }

        timer.Start();
    }
}

我没有 Javascript 经验,但来自 here 的回答我认为会对你有所帮助:

<input name="domain" type="text" id="domain" onKeyUp="javascript:chk_me();">

var timer;
    function chk_me(){

       clearTimeout(timer);
       timer=setTimeout(function validate(){...},1000);
    }

关于jquery - StackOverflow 中标签的 AutoSuggest 功能如何避免每次击键时进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1688930/

相关文章:

swift - 如何拥有一个显示不同uitableview建议的搜索栏

javascript - 如何在 Visual Studio 2008 中禁用疯狂的 Javascript/HTML 格式?

ajax - jquery ui 自动完成 : how to cancel slow ajax request after text input loses focus

java - Intellij 完成贡献者完成结果集

jquery - 如何用随机答案回答下拉列表

javascript - Summernote 下拉菜单

.net - 使用Javascript过滤div的 "list"

javascript - 使用 jquery mobile 加载页面后更新数据主题

php - jQuery 自动完成 Mysql PHP

iOS TextField - 自动完成添加空白字符