jquery自动完成插件,json

Posted

技术标签:

【中文标题】jquery自动完成插件,json【英文标题】:jquery auto complete plugin,json 【发布时间】:2012-01-29 01:13:19 【问题描述】:

我的要求是使用我的 rails 应用程序在我的文本框中实现自动完成 我已经下载了jquery自动完成插件,请帮我看看如何实现它。

我的控制器代码:

 def new
@release = Release.new
@ic_ids = params[:ic_ids] ? params[:ic_ids] : []
**@testers = User.find_by_sql("select * from users where id in(select user_id from user_role_assignments where role_id in (select id from roles where name like 'Tester')) order by name").paginate(:page=>params[:page],:per_page=>30)**   
 if params[:project_id]
  @release.project = Project.find(params[:project_id])
end
respond_to do |format|
  format.html # new.html.erb
  format.xml   render :xml => @release 
end
end

我想为 @testers 创建自动完成功能。

我的查看代码:

 %td.grid.full_panels
    -table_panel "Assign Testers" do
      %table
        %th Name
        -puts "testers=#@testers"
        = form.label :tester_tokens, "Testers" 
        **= form.text_field :tester_tokens**    

谢谢, 拉姆亚。

【问题讨论】:

你有没有尝试实现它..! 是的 Sudhir 我尝试在我的视图文件中进行以下更改: :javascript data = #@testers.to_json = javascript_include_tag :defaults, :cache => true 和我的 application.js $( document).ready(function() $('#root_name').autocomplete(data); );但我没有看到正在传递的数据。 【参考方案1】:

当您实现自动完成时,实际上有两种方法可以实现它。

    提前准备好所有数据。 在每个“keydown/keyup”或“onchange”上向服务器发送 ajax 请求

对于第一种方法,有一个非常酷的 jquery 插件,叫做jsonSuggest 而且很容易实现。 您需要像这样的 (id,text) 对中的 json 对象:

var myData = [ id : "someId" , text : "someText" , ... ]

然后你调用下面的代码:

$("#myInput").jsonSuggest( data : myData , onSelect: function(item) /* callback code */ )

这甚至可以容纳数千个对象。它将为服务器提供多个 ajax 调用更好的性能。 如果您更喜欢使用 jquery-ui 插件,请查看the default example

另一种方法(多个ajax请求)非常相似,但我认为jsonsuggest不支持它。它由 jquery-ui 插件支持。 对于这种情况,你应该看看the remote example

【讨论】:

以上是关于jquery自动完成插件,json的主要内容,如果未能解决你的问题,请参考以下文章

jQuery自动完成JSON响应

自动完成 Jquery Json

JQuery 自动完成:在一个字段中显示同一个 JSON 对象的多个属性

文本框中的自动完成 json

没有 jQuery UI 的自动完成

jquery自动完成不适用于JSON数据