我有一个带有大小属性的简单选择框,我想在其值更改时调用一个函数。
所以我在 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 事件,而值没有更改。
如果我注册了一个 jQuery 更改事件而不是使用纯 JavaScript ( http://jsfiddle.net/MGtJZ/1/ ),也会发生这种情况,即,我删除了 onchange 属性并像这样注册更改事件处理程序:
$(function () {
$('#selecttest').change(function () {
alert($(this).val());
});
});
这是我应该期待的吗?
注意:仅当您先单击滚动条或箭头时才会发生这种情况。如果单击所选值或其他值,然后单击滚动条/箭头,此行为将停止。