IEでのselect

option要素ってvalue属性が指定されていない場合はoption要素の内容をvalueの値として扱うことになっているはずなのですが、IEの場合はそのルールが適用されません。

以下、サンプル。

サンプルのコードは以下の通り。

<div>
<select id="test_select_01" onchange="javascript:alert(this.value)">
    <option disabled="disabled" selected="selected">-- どれか選んでね --</option>
    <option>選択肢 1</option>
    <option>選択肢 2</option>
    <option>選択肢 3</option>
</select>
</div>

「選択肢 n」(nは選択したoptionの数字)がアラートで表示されなきゃいけないはずなんですが……。

ちなみに各option要素にvalue属性を設定すればIEでも問題なくvalueの値を返すようになります。

2つめのサンプルのコードは以下の通り。

<div>
<select id="test_select_02" onchange="javascript:alert(this.value)">
    <option disabled="disabled" selected="selected">-- どれか選んでね --</option>
    <option value="選択肢 1">選択肢 1</option>
    <option value="選択肢 2">選択肢 2</option>
    <option value="選択肢 3">選択肢 3</option>
</select>
</div>

なおIEではoption要素内のdisabled属性(選択不可)も機能しません(IE7以前の場合)