質問: bootstrap-selectを使ってセレクトボックスを作成しました。 画面上に同じ値が表示されていれば、セレクトボックスの値を選択状態にし、表示がなければセレクトボックスから値を削除したいのですが、 同じname属性の中で複数の値が表示されている時に、セレクトボックスの値が複数選択状態になりません。 下記で言うと、サンプル1とサンプル2の両方を選択状態にしたいのですが、 サンプル2の方しか選択状態になりません。 どなたかご教授願います。 ``` サンプル1 サンプル2 タイトル サンプル1 サンプル2 ``` ``` $(function() { if($('.list-hoge_0').length) { $('select[name=hoge]').val("0"); $('.selectpicker').selectpicker('refresh'); } else { $('select[name=hoge]').find("[value=0]").remove(); } if($('.list-hoge_1').length) { $('select[name=hoge]').val("1"); $('.selectpicker').selectpicker('refresh'); } else { $('select[name=hoge]').find("[value=1]").remove(); } }); ```
回答: `$('select[name=hoge]').val()`は選択状態が配列で表現されていますので、選択状態を追加するには値をpushした配列をセットしてやらなければならない。質問文の書き方では 0 か 1 で上書きされてしまいます。 ``` if($('.list-hoge_0').length) { var v = $('select[name=hoge]').val(); // 現在の選択状態の配列を取ってきて v.push("0"); // 選択したいアイテムの値をpushして $('select[name=hoge]').val(v); // もう一度セットする ``` もっとスマートな書き方があるかもしれないけどとりあえずこんな感じで動かせます。