HTML Select with disabled选项在FireFox中返回错误的selectedIndex

oli*_*olz 7 html firefox drop-down-menu

我有一个Select残疾Option谁是默认选择的一个:

<select name="select" size="1">
   <option>0</option>
   <option selected disabled>1</option>
   <option>2</option>
   <option>3</option>
   <option>4</option>
</select>
Run Code Online (Sandbox Code Playgroud)

如果我选择了它,它将返回1.一切还好.

但是如果我打开弹出窗口并将光标悬停在另一个上Option (例如'4')
并ESC通过点击其他任何地方取消它.

该Select输入显示旧值1,但返回上得到选择4.

jsfiddle的示例

Chrome仅FireFox(4/5)不会发生这种情况

Ale*_*ijk 1

当您以这种方式退出选择时,显示似乎不会改变,但是 Firefox 正在寻找不同的 selectedValue,因为它发现当前选定的选项已禁用,这在 Firefox 看来是不可能的。

onChange 事件直到 onBlur 事件才被触发(即 selectedValue 发生更改时,但这不是显示更改的内容)。如果我们要重置 onChange 事件中的值,则可能会再次调用该事件。因此,通过利用 onBlur 事件,我们可以提供以下解决方法:

onBlur="javascript:document.getElementsByName('select')[0].selectedIndex = document.getElementsByName('select')[0].selectedIndex;"

http://jsfiddle.net/aRMpt/22/

我希望我在这里说得有道理。