在我看来,我有以下内容:
<%= 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 %>
答案 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()" }) %>