【问题标题】:Add blank option to top of select and make it the selected option in IE将空白选项添加到选择顶部并使其成为 IE 中的选定选项
【发布时间】:2011-10-29 20:42:00
【问题描述】:

HTML:

<select id="dropdown">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

jQuery:

$("#dropdown").prepend("<option value='' selected='selected'></option>");

当我在 FireFox 或 Chrome 中运行它时,下拉列表中选择了新插入的空白选项。当我在 IE8 中运行它时,它仍然选择了沃尔沃。有什么想法吗?

http://jsfiddle.net/YFu2h/

【问题讨论】:

    标签: jquery html forms


    【解决方案1】:

    改成这个,就可以了:

    $("#theSelectId").prepend("<option value=''></option>").val('');
    

    http://jsfiddle.net/YFu2h/1/

    似乎 IE 仅在第一次遇到 select 时才评估 selected 属性。

    【讨论】:

    • 这会将 val 设置为空。删除您最初拥有的所有选定项目
    • @HarryBosh - ...这正是 OP 所要求的。
    【解决方案2】:

    我不确定您的代码为什么不起作用(可能与在 IE 中,selectedIndex 是只读的这一事实有关)但是,这样做在 IE 中有效:

    $("#dropdown").prepend("<option value='' selected='selected'></option>");
    $("#dropdown")[0].options[0].selected = true;
    

    【讨论】:

      【解决方案3】:

      试试:

      $("#dropdown").prepend(new Option('', '', true, true));
      $("#dropdown option:first").attr("selected", "selected");
      

      或者,如果您愿意:

      $("#dropdown").prepend("<option value=''></option>");
      $("#dropdown option:first").attr("selected", "selected");
      

      使用第一个选项会稍微快一些。空白引号表示空白值和空白文本,因此请根据需要填写。您不需要在前面添加 selected 属性,现在我们将在之后添加它们。这与 Internet Explorer 未识别它被标记为选中有关,因为它刚刚创建。

      【讨论】:

        【解决方案4】:
        $("#id").prepend("<option value=' ' selected='selected'></option>");
        

        prepend 会将选项添加到顶部,selected='selected' 会将其选中。由于value=' ',所以是空值选项。

        【讨论】:

        • 感谢 David Angulo 的提问,请立即查看。
        猜你喜欢
        • 2010-11-07
        • 2012-11-29
        • 2017-01-19
        • 1970-01-01
        • 2022-10-25
        • 1970-01-01
        • 1970-01-01
        • 2012-01-26
        相关资源
        最近更新 更多