【发布时间】:2012-07-18 22:25:13
【问题描述】:
在 Rails 中,我的 Dish 页面上有一个表单,其中有一个名为 Side Dishes 的多选 Chosen 字段。
如果用户从另一个浏览器窗口添加另一个配菜,我希望我的配菜选择字段的选项自动更新(无需重新加载页面)。
我从 Chosen 网站查看了 Updating Chosen Dynamically,但我不知道这是否是我正在寻找的内容和/或我是否理解正确。
目前,我的dishes.js.coffee 看起来像这样:
jQuery ->
$(".chzn-side-dish").chosen()
$(".chzn-side-dish").trigger "liszt:updated"
但显然这并不能解决问题。我的理解是.trigger 将定期刷新配菜列表并从配菜表中获取任何新添加(或删除)。
Dish 页面上的表单遵循以下约定:
= form_for @dish, :html => { :class => "form-horizontal" } do |f|
...
%fieldset
.control-group
=f.label :side_dish_ids, "Side Dish(es)", :class => 'control-label'
.controls
=f.collection_select :side_dish_ids, SideDish.order(:name), :id, :name, {}, {multiple: true, :class => 'chzn-side-dish'}
PS -- 我已经查看了other SO 的问题,但无法全部正常工作。同样,我不确定我是否正确理解了.trigger... 的用途。
【问题讨论】:
-
jQuery 的
.trigger()是一种模拟浏览器事件的编程方式,该事件通常会响应用户交互而发生,例如。 “点击”或“鼠标悬停”。它也可以与没有用户交互等效项的自定义事件一起使用。
标签: jquery ruby-on-rails forms jquery-chosen