我在IE9中遇到了一个奇怪的错误。
以下是下拉代码:
<select>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
如果我没有在下拉列表的第一个选项中提及“已选择”,则仍会在除IE9之外的所有其他浏览器中选择它。即使它适用于IE8。
这是一个错误还是我必须为第一个选项提及'选择'?
有人能帮帮我吗?
答案 0 :(得分:1)
是的,你应该提到第一个选项的选择。 否则,它只显示选项但未选中。
答案 1 :(得分:1)
如果IE 9真的那样(我没有IE 9,IE 11中使用IE 9仿真模式时不存在问题),那么它确实很奇怪,但技术上并不是一个bug。 HTML 4.01规范说明了preselected options:
如果没有OPTION元素具有所选属性集,则为用户代理 选择最初选择哪个选项的行为是未定义的。 注意。由于现有的实现以不同的方式处理这种情况, 当前规范与RFC 1866([RFC1866]第8.1.3节)不同, 其中说明:
初始状态选择了第一个选项,除非任何元素上都存在SELECTED属性。
由于用户代理行为不同,作者应确保每一个 菜单包含默认的预选选项。
那是从1999年开始,如果有selected
属性,浏览器通常会采用预先选择第一个选项的原则。但使用selected
属性仍然是最安全的。
如果不想要任何选项最初被选中,请在开头插入一个空选项元素:
<select name=foo>
<option></option>
<option>1
<option>2
...
</select>
用于处理的客户端和服务器端代码必须检查值是否为空并适当处理该情况 - 这意味着用户没有做出任何选择,然后您可以接受此处理或将其作为错误情况。
答案 2 :(得分:1)
我的坏我做错了。我根据用户之前选择的内容在页面加载中选择了选项值。如果用户没有选择任何东西那么在那种情况下 'selectedVal'是空白的,因此导致问题。
我已经修改了下面的代码,现在它的工作非常好。
var selectedVal = userselectedval || 1;
$("select").val(selectedVal);
感谢您的快速回复!