javascript - 使用语义 ui 框架和 ajax 请求的自动完成或提前输入搜索框

标签 javascript semantic-ui

我正在使用语义 ui 框架创建一个简单的搜索表单,该表单使用通过 ajax 请求调用 api 生成的自动完成信息。

服务器端点生成一个简单的 JSON 数组

例如 http://data.nzor.org.nz/names/lookups?query=lu

给予

["Lubbockia","Lubbockia aculeata","Lubbockia squillimana","Lucanidae"]

我可以看到发出请求的搜索,但我不确定如何显示结果。

我在 http://jsfiddle.net/6ojkdvnn/4/ 创建了一个 jsfiddle

$(document)
.ready(function () {

 $('.ui.search')
  .search({
      apiSettings: {
          url: 'http://data.nzor.org.nz/names/lookups?query={query}'
      },
      debug: true,
      verbose: true
  });
});

我已经尝试了各种选项,但现在已将其剥离回上面的基本设置,以免混淆问题。文档非常好 ( http://semantic-ui.com/modules/search.html ),但我不太明白如何让它发挥作用。

如果有帮助,我宁愿不更改 api 响应。

最佳答案

Semantic-UI 的 seach api 也有问题。

所以经过一些研究,我了解到它可以这样使用:

我也在使用 Ruby on Rails。

自动完成城市名称的 jQuery 文件:

# Semantic-Ui Search
# Sets for autocomplete name of cities while typing.
$('.ui.search.city').search
  apiSettings: 
    action: 'search', url: '/cities/autocomplete.json?query={query}'
  fields:
    results : 'cities'
    title   : 'name'
    description   : 'state'
  minCharacters : 3

语义 UI(搜索)期望“结果”作为根节点和带有标题和描述的子内容的节点,以及 api 指定的其他内容。因此,如果您有其他名称的 json 结果,则必须更改 searc 函数的方法调用。

因此,我更改了 resultscitiestitlenamedescriptionstate

在我的 Controller 中,我刚刚做了一个这样的查询:

def autocomplete    
  @cities = City.includes(:state).order(:name).where('name like ?', "%#{params[:query]}%")
end

在我的 Routes 文件中,我指定了返回集合的 get 方法。

# Resources for cities.
resources :cities, only: :index do
  get :autocomplete, :on => :collection
end

并使用 Rabl gem 格式化 json 文件的输出:

collection @cities, root: :cities , object_root: false

attributes :id, :name
node(:state) { |city| city.state.name }
node(:query) { params[:query] }

就是这样,它对我有用。

关于javascript - 使用语义 ui 框架和 ajax 请求的自动完成或提前输入搜索框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27374340/

相关文章:

javascript - 为什么不触发不同版本的IE

javascript - Node : Can you use plain Javascript objects as an in-memory datastore?

html - Bootstrap 列无法在 iOS 设备上正常工作

jquery - 使用 jQuery 将类添加到单击(嵌套)的 div 元素

Javascript 替换西里尔文中的单词(不是单词的一部分)

javascript - iframe 中的 Php 不显示

javascript - 语义下拉 100% 宽度(左 = 0 像素)?

javascript - 语义 UI 将普通侧边栏最小化为图标侧边栏

html - 如何处理语义 UI 中的表溢出

javascript - 如何将 html 页面的标题插入到 anchor 标记的文本中?