テーマごとにグループ化された多くの選択入力があるフォームがあります。グループごとにマスター選択があり、ユーザーはグループ内のすべての選択をマスター値に設定できます(gradescalesは、グレード1〜8を提供する方法です)。
どうすればこれを乾かすことができますか?
形
<label>Change all to:</label>
<%= select_tag "section_one", options_for_select(gradescales), :id => "section_one_master" %>
<div id="section_one_wrapper">
<%= f.input :item_one, :collection => gradescales %>
<%= f.input :item_two, :collection => gradescales %>
<%= f.input :item_three, :collection => gradescales %>
<%= f.input :item_four, :collection => gradescales %>
</div>
jquery関数は次のようになります。
$("#section_one_master").change( function() {
var a = $("#section_one_master").val();
$("#section_one_wrapper select").val(a);
});
$("#section_two_master").change( function() {
var a = $("#section_two_master").val();
$("#section_two_wrapper select").val(a);
});
...again, and again
したがって、section_one_masterが変更されると、関数がヒットし、section_one_wrapper div内のすべての選択入力が、マスターで選択された値と一致するように変更されます。
私には多くのグループがあり、それぞれにマスター選択入力があります。これを1つの関数まで乾燥させてから、最初に関数を呼び出したマスターを動的に識別し、規則を使用して、選択した適切なグループを変更するにはどうすればよいですか?