チェックボックスや、selectのmultipleは複数選択できるが、jqueryでval()した際に戻り値はどうなるか。
チェックボックス
<input type="checkbox" name="sample" value="1">
<input type="checkbox" name="sample" value="2">
というチェックボックスに対し、両方ともチェックを入れ、val()した場合。
$('[name="sample"]:checked').val(); // => 1
先頭の値のみが取れる。
全部欲しい場合は以下のように書く。
$('[name="sample"]:checked').toArray().map(e => e.value); // => [1,2]
select[multiple]
<select name="sample" multiple>
<option value="1">Sample1</option>
<option value="2">Sample2</option>
<option value="3">Sample3</option>
</select>
全てのoptionを選択した状態で、val()。
$('[name="sample"]').val(); // => [1,2,3]
こちらは一撃で全てとってくれる。
ちなみに、select[multiple]は一括で値設定もできる。
$('[name="sample"]').val([1,3]); // => 対応するoptionが全て選択される