【jQuery】multipleなセレクトボックスで値を全取得する方法

従来だとセレクトボックスで選択できるのは1つだけでした。

しかしHTML5からは multiple を使うことで、複数選択が可能になってます。

ただjQueryとかから値を取得する方法が分かりにくい・・

ということで、複数選択可にしたselectから値を取得する方法 をまとめてみました。

HTML5から複数選択できる select を multiple で作れる

複数選択できるセレクトボックスを作りたい場合、、、

select要素に対して multple属性 を設定することで可能

▼ 例えばHTMLコード例を示すならこんな感じ

ただ単純に multiple  を属性追加するだけ(値は必要なし)

これだけで複数選択できるセレクトボックスが作れるとは、今まで知らなかった・・・

 

ちなみに できあがったセレクトボックスが次の通り

▼ 未選択状態

未選択状態でのmultiple属性を指定したセレクトボックス

▼ 複数選択したときの様子

いくつかの項目を選択したセレクトボックス。PCだとCtrlを押しながら右クリックで選択できる

複数選択は Ctrl を押しながら 項目クリック でできます。

(このあたりの独特な操作性はもうすこし改善してほしい、、、)

いちいちチェックボックスとか作りたくないときに便利かもしれません。

jQueryで複数選択のselectの値を取得する方法

それで問題なのが、

どうやって選択されている値を取得するのかということ

今回サンプルとして次のセレクトボックスを作ってみました。

こういうセレクトボックスの選択されてる値( m  とか d  とか k  )を取得するとします。

その場合、jQueryだと次の2つの方法で取得可能です。

1.選択された値をmapで配列に変換する方法

まず1つめは map関数 を使った方法

チェックボックスとかでも同じようにできます。

▼ 例えばこのようなコード

▼ このコードのコンソール出力結果

配列でちゃんと取得できてます。

ただ色々調べていくうちに、こんな ”非効率な方法” 使う必要ないと判明・・・

2.普通に val から配列で取得する方法

実は select に multiple属性を付けた場合、、、

なんと valメソッド から選択されてる値を配列で取得可能

だから今紹介した map  であれこれする必要なんてなかったです。

▼ 実際のコード例はこの通り

▼ このコードのコンソール出力結果

こっちの方が数百倍楽

複数選択できるセレクトボックスを作ったなら valメソッド をそのまま使えば問題なし!

ここまでのまとめ

以上、複数指定可なセレクトで値取得する方法でした。

jQueryを使っているなら、普通に valメソッドを使えばいいってだけの話です。