解决方法:<select>第一个<option>永远不会触发onchange事件</option> </select>

时间:2013-11-04 19:50:41

标签: javascript events onchange

我在网页上有一个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事件”问题的标准答案是制作虚拟(禁用)第一选项。但这不适合此页面的设计:菜单表示显示当前状态,同时提供用户可以更改设置的选项。对于此页面,有一个虚拟条目是糟糕的界面设计。

1 个答案:

答案 0 :(得分:6)

对于第一个选项,

this.selectedIndex0 0是假的,所以if永远不会发火。

完全摆脱if;没有理由。