2

在我看来,我有以下几点:

<%= select("event", :event_id, events_ids_titles_hash, { :include_blank => true, :onchange => "alert_me_test()" }) %>

alert_me_test() 是:

<script type="text/javascript">
  function alert_me_test()
  {
      alert ("this is a test")
  }
</script>

下拉列表看起来不错,但是当我从中选择时,什么也没有发生。我期待一个带有“这是一个测试”的警报框。

编辑案例:

当我进行编辑时,我有以下代码:

<% if @panel.event_id %>
  <%= select("panel", :event_id, events_ids_titles_hash, {:selected => @panel.event_id}, { :include_blank => true}) %>

我的 IDE(RubyMine)不想接受“onchange”作为附加参数,并将其放在 :selected 或 :include_blank 参数哈希之一中不会产生错误,但它也不起作用

最终适用于 new 和 edit 的内容:

<% if @panel.event_id %>
    <%= 'Event is ' + events_ids_titles_hash.key(@panel.event_id) %>
    <%= select("panel", :event_id, events_ids_titles_hash, {:selected => @panel.event_id}, { :include_blank => true, :onchange => "alert_me_test()"}) %>
<% else %>
    <%= 'Select Event from list' %>
    <%= select("event", :event_id, events_ids_titles_hash, { :include_blank => true }, { :onchange => "alert_me_test()" }) %>
<% end %>
4

2 回答 2

6
<%= select("event", :event_id, events_ids_titles_hash, { :include_blank => true, :onchange => "alert_me_test()" }) %>

为我工作,但我必须说你正在用这个来对抗当前。Rails 遵循 UJS,这意味着您的偶数处理程序应该与您的 HTML 分开。在这种情况下,选择将是相同的减去 onclick,然后脚本将是

<script type="text/javascript">
  $('select').change(alert_me_test);

  function alert_me_test(){
  ...
  }
</script>

您不必以这种方式做事,但在查看事件调用来自的脚本时会更清楚。

于 2012-07-18T15:02:03.073 回答
2

我相信您需要将其设置:onchange为 HtmlOption,这是第 4 个参数:

<%= select("event", :event_id, events_ids_titles_hash, { :include_blank => true}, {:onchange => "alert_me_test()" }) %>
于 2012-07-18T14:47:50.203 回答