2012-07-18 70 views
2

在我看来的的onchange调用JavaScript函数,我有以下几点:期间选择框

<%= 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”作为一个附加参数,并把它里面的一个:选择或: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 %> 

回答

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> 

你不必这样做事,但它使更清晰的寻找一个脚本,您的活动呼叫时来自。

+0

我会测试这个 – EastsideDeveloper 2012-07-18 15:24:05

+0

它为我工作。编辑也起作用:<%= select(“panel”,::event_id,events_ids_titles_hash,{:selected => @ panel.event_id},{:include_blank => true,:onchange =>“alert_me_test()”})% >有一个问题:警报被调用两次。有任何想法吗? – EastsideDeveloper 2012-07-18 15:54:56

+0

我假设你在脚本中使用了事件处理。在这种情况下,您可以从:html哈希中删除:onchange =>“alert_me_test()”。否则,他们都会被触发。 – AdamCooper86 2012-07-18 16:35:19

2

我相信你需要设置:onchange作为HtmlOption,这是第四个参数:

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

工作。我仍然没有想出编辑部分的语法。请参阅上面编辑的问题。 – EastsideDeveloper 2012-07-18 15:10:29