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 引数ハッシュのいずれかに入れてもエラーは発生しませんが、どちらも機能しません。

新規と編集の両方で機能するようになったのは次のとおりです。

<% 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から分離する必要があります。この場合、selectはonclickを除いたものと同じになり、スクリプトは次のようになります。

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

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

この方法で行う必要はありませんが、イベント呼び出しの発信元であるスクリプトを見るとわかりやすくなります。

于 2012-07-18T15:02:03.073 に答える
2

:onchange4 番目のパラメーターである HtmlOption として設定する必要があると思います。

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