我在网页上有一个select-option块,我希望它可以触发在其中选择的任何选项。但是,第一个选项永远不会激活onselect:即使之前选择了以后的选项也不会。
例如,如果我的代码为:
Settings:
Sensitivity: <select id="sensitivity" onchange="if (this.selectedIndex) ajaxUpdateConfig();">
<option value="25">25%</option>
<option value="50">50%</option>
<option value="100" selected>100</option>
</select>
...然后选择第一个选项25%,从不触发onchange()事件。
同样,如果第一个选项是默认值,并且用户改变了它,然后想要返回它,那么也不会触发onchange事件。
注意:我知道“首选不产生onchange事件”问题的标准答案是制作虚拟(禁用)第一选项。但这不适合此页面的设计:菜单表示显示当前状态,同时提供用户可以更改设置的选项。对于此页面,有一个虚拟条目是糟糕的界面设计。
答案 0 :(得分:6)
this.selectedIndex
为0
0
是假的,所以if
永远不会发火。
完全摆脱if
;没有理由。