如何判断 IE 8 中的选择列表是否没有选择任何内容?

发布于 2024-12-13 05:45:36 字数 642 浏览 0 评论 0原文

如何在 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 中区分这两种情况?

How can I use JavaScript in IE 8 to differentiate between a select list with the first item selected, and one with nothing selected?

<select id="first">
    <option>John</option>
    <option>Paul</option>
</select>

<select id="second">
    <option selected="selected">George</option>
    <option>Pete</option>
</select>

Browsers render the first list with "John" apparently selected. In Chrome and Firefox, the option is not properly selected: a CSS selector won't find it, so I can tell that it's not selected. However, IE 8 does select it properly, so I can't tell that it wasn't selected.

Here's a fiddle, which verifies that I can tell the difference between the two cases in FF and Chrome but not in IE: http://jsfiddle.net/YvfpV/7/

Is there any way to distinguish the two cases in IE 8?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你与昨日 2024-12-20 05:45:36

如果未选择任何选项,则选择元素的 selectedIndex 属性将为-1。

但是,如果没有选项具有选定的属性(即没有一个 预选),浏览器可能会默认选择一个选项。因此,建议一个选项具有 selected 属性,这样您就知道默认情况下会选择哪一个,并且永远不应该出现没有选择任何选项的情况。

您无法可靠地确定用户是否选择了该选项或仅使用了默认选项,因此请勿将您的逻辑建立在了解这一点的基础上。

编辑

<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 中,选择的默认状态是 selecteIndex == 0 且第一个选项的 selected 属性 == true。因此,OP 中的明显逻辑并不适用于指定浏览器的这些版本。

If no option is selected, the the select element's selectedIndex property will be -1.

However, if no option has the selected attribute (i.e. none are preselected), browsers may select one option by default. Therefore it is recommended that one option has the selected attribute so you know which one will be selected by default and there should never be a case where no options are selected.

You can't reliably determine if the user selected the option or just used the default, so don't base your logic on knowing that.

Edit

<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>

In Firefox 5 and Chrome 14, the default state of the select is with selecteIndex == 0 and the first option's selected property == true. So the apparent logic in the OP doesn't hold for those versions of the nominated browsers.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文