如果用户暂停输入1-2秒,如何进行自动搜索?

时间:2011-06-20 02:58:24

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

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

如何自动提交此表单:

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

2 个答案:

答案 0 :(得分:2)

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

所以,你在keypress处理程序中有一个进程,如下所示:

  1. 我有计时器在运行吗?
    • 如果是,clearTimeout,则使计时器ID为空,然后继续。
    • 如果不是,请继续。
  2. 我至少有两个角色吗?
    • 如果是,请使用setTimeout启动计时器并存储计时器ID,附加到计时器的功能将提交表单。
    • 如果不是,请继续。
  3. ...
  4. 利润。

答案 1 :(得分:0)

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