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的主要内容,如果未能解决你的问题,请参考以下文章