サイズ属性を持つ単純な選択ボックスがあり、その値が変更されたときに関数を呼び出したいと考えています。
そこで、select タグに onchange イベントを追加します。
<select onchange="alert(this.options[this.selectedIndex].value);" size="6" id="selecttest">
<option value = "1">1</option>
<option value = "2" selected>2</option>
<option value = "3">3</option>
<option value = "4">4</option>
<option value = "5">5</option>
<option value = "6">6</option>
<option value = "7">7</option>
<option value = "8">8</option>
<option value = "9">9</option>
<option value = "10">10</option>
<option value = "11">11</option>
<option value = "12">12</option>
</select>
http://jsfiddle.net/MGtJZ/2/を参照してください。
Windows 7 Pro の Chrome [バージョン 27.0.1453.94 m] (私のテストでは IE や Firefox ではありません) では、選択ボックスのスクロール バーをクリックするだけで値が変更されずに onchange イベントが発生します。
これは、純粋な JavaScript ( http://jsfiddle.net/MGtJZ/1/ )を使用する代わりに jQuery 変更イベントを登録した場合にも発生します。つまり、 onchange 属性を削除し、次のように変更イベント ハンドラーを登録します。
$(function () {
$('#selecttest').change(function () {
alert($(this).val());
});
});
これは私が期待すべきことですか?
注: これは、最初にスクロール バーまたは矢印をクリックした場合にのみ発生します。選択した値または別の値をクリックしてからスクロール バー/矢印をクリックすると、この動作が停止します。