如何在IE 8中使用JavaScript来区分选择的第一个项目和没有选择的项目?
<select id="first">
<option>John</option>
<option>Paul</option>
</select>
<select id="second">
<option selected="selected">George</option>
<option>Pete</option>
</select>
浏览器呈现第一个列表,显然选择了“John”。在Chrome和Firefox中,未正确选择该选项:CSS选择器无法找到它,因此我可以判断它未被选中。但是,IE 8确实选择了它,所以我不能说它没有被选中。
这是一个小提琴,它验证我可以分辨出FF和Chrome中的两种情况,但不是IE中的情况:http://jsfiddle.net/YvfpV/7/
有没有办法在IE 8中区分这两种情况?
答案 0 :(得分:2)
如果未选择任何选项,则select元素的selectedIndex属性将为-1。
但是,如果没有选项具有所选属性(即没有preselected),浏览器可以默认选择一个选项。因此,建议一个选项具有所选属性,以便您知道默认情况下将选择哪个选项,并且绝不会出现没有选择任何选项的情况。
您无法可靠地确定用户是选择了该选项还是仅使用了默认选项,因此请不要根据您的逻辑确定。
<form onsubmit="return false">
<select id="sel0">
<option>0
<option>1
</select>
<button onclick="
var sel = document.getElementById('sel0');
alert('selectedIndex: ' + sel.selectedIndex + // 0
'\noptions[0].selected: ' + sel.options[0].selected); // true
">hey</button>
<input type="reset">
</form>
在Firefox 5和Chrome 14中,select的默认状态是selecteIndex == 0,第一个选项的selected属性== true。因此OP的明显逻辑并不适用于那些指定浏览器的版本。