違うプロジェクトの人から、JSPの再表示時の問い合わせを受けました。
「サーブレットの処理後、元の表示内容を保持した状態で再表示を行う際に
セレクトボックスの選択行が画面上に表示されないが、どうにかならないか。」
ということでメモ。
<select name="select1" size=3>
<option name="01">aaa</option>
<option name="02">bbb</option>
<option name="03">ccc</option>
<option name="04" selected>ddd</option>
</select>
上記のデータをサーバから返した場合は、4番目の選択された状態で画面に表示されます。
しかし
<select name="select1" size=3 multiple>
<option name="01">aaa</option>
<option name="02">bbb</option>
<option name="03">ccc</option>
<option name="04" selected>ddd</option>
</select>
selectタグが複数選択可(multiple)となっていた場合は、4番目が選択されているものの、表示は隠れてしまいます。
onload時にjavascriptにて制御してみます。
function test(){
if( select1.option[3].selected == true )
select1.options[3].selected = true;
}
一見無駄に見えますが、このようにすることで選択行を表示した状態にすることができました。
※検証
OK:IE、Firefox
NG:Opera
・・・いまいちだ。(IE限定サイトだから問題ないけど。)