【问题标题】:How to do an automatic search if user pauses input for 1-2 seconds?如果用户暂停输入 1-2 秒,如何进行自动搜索?
【发布时间】:2011-09-18 09:14:17
【问题描述】:

我有一个form_tag,它将用户的搜索远程提交给 Rails 控制器方法,该方法以 JS 格式返回结果。

如何自动提交此表单:

  1. 当用户输入至少 2 个字符时
  2. 当用户暂停至少 1 秒时?

【问题讨论】:

    标签: javascript jquery ruby-on-rails ruby-on-rails-3 search


    【解决方案1】:

    使用 jQuery 将按键处理程序绑定到输入。在回调中,使用setTimeout 启动一个计时器,在一秒钟后提交表单,并保留setTimeout 返回给您的计时器ID。如果您在触发按键回调时有非空计时器 ID,请使用 clearTimeout 停止计时器并将计时器 ID 设置为空;如果此时它们也有两个字符,则(再次)启动计时器并(再次)存储计时器 ID。

    所以,您在按键处理程序中有一个过程,如下所示:

    1. 我是否正在运行计时器?
      • 如果是,clearTimeout,清空计时器 ID,然后继续。
      • 如果否,则继续。
    2. 我是否至少有两个字符?
      • 如果是,则使用setTimeout 启动计时器并存储计时器ID,附加到计时器的函数将提交表单。
      • 如果否,则继续。
    3. ...
    4. 利润。

    【讨论】:

      【解决方案2】:

      我认为@mu 的回答很棒,但我想花点时间推荐一个自动完成输入字段。我目前正在自己​​维护一个,它被称为Better Autocomplete。它可以处理服务器的响应,不管它返回什么数据。其他更广泛的脚本是 jQuery UIanother third party jQuery plugin

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-29
        • 2020-03-15
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-02
        相关资源
        最近更新 更多