私は現在、それぞれの建物ごとにグループ化されたさまざまな部屋を持つマルチセレクトボックスをフィルタリングする建物のドロップダウンを持っています。マルチ選択ボックスをフィルタリングした後にオプトグループラベルを保持するにはどうすればよいですか?
マルチセレクションボックスをドロップダウンリストでフィルタリングすると、マルチセレクションボックスが正しくフィルタリングされますが、ルームのビルディングがどのようなものであるかをユーザーに知らせるoptgroupラベルは削除されます。
EX:は...私は私のドロップダウン
<optgroup label="Accounting Library">
<option value="143">105A</option>
<option value="144">105B</option>
</optgroup>
<optgroup label="Ahmanson Center">
<option value="721">fad</option>
<option value="737">zzz</option>
</optgroup>
私はその後、取得を経て会計ライブラリを選択するとしましょう、私は維持したいことを除いて、正しい
<option value="143">105A</option>
<option value="144">105B</option>
UI用のoptgroupラベル。
私はJavaScriptを使用してこれを行う方法を知っていますか?
JAVASCRIPT
$(function() {
var rooms = $('#key_room_ids').html();
$("#key_building_name").on("change",function() {
var building, options;
building = $('#key_building_name :selected').text();
options = $(rooms).filter("optgroup[label='" + building + "']").html();
if (options) {
###This doesn't return the values with the optgroup label
return $('#key_room_ids').html(options);
} else {
return $('#key_room_ids').empty();
}
});
});
FORM
<%= simple_form_for(@key, html: { 'data-parsley-validate' => '' }) do |f| %>
###Dropdown Filter
<%= f.collection_select :building_name, Building.order('name ASC'), :id, :name, {:include_blank => '- Please Select A Building To Filter The List Below -'}, { class: "form-control" } %>
###Multi Select Box Grouped by Building
<%= f.grouped_collection_select :room_ids, Building.order('name ASC'), :rooms, :name, :id, :name, {include_blank: "- Please Select The Rooms This Key Works For -"}, {multiple: true, size: 10, :class => "form-control"} %>
<% end %>
あなたのコードは素晴らしいですが、私がもう一度フィルタリングしようとすると、壊れてしまいます。 –
ええ、私はただ修正するだけでした。 – nnnnnn
また、 "Show All"オプションが本当に好きです。その値をRailsコード/フォームに追加する方法はありますか? –