在更改选择框期间调用JavaScript函数

时间:2012-07-18 14:32:28

标签: javascript ruby-on-rails

在我看来,我有以下内容:

<%= 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参数哈希中的一个中不会产生错误,但它不起作用

最终为新的和编辑工作的是什么:

<% 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 %>

2 个答案:

答案 0 :(得分: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>

您不必以这种方式执行操作,但在查看事件调用来源的脚本时,它会更清晰。

答案 1 :(得分:2)

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

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