【问题标题】:jQuery - set the value of a select to one of its optionsjQuery - 将选择的值设置为其选项之一
【发布时间】:2011-01-30 10:33:00
【问题描述】:

如何将选择输入字段的值设置为未禁用的第一个选项的值

例如,在此字段中,选定的值为 1。如何将此值更改为下一个非禁用选项,即。 2 ?

<select>
  <option disabled="disabled" value="1">1</option
  <option value="2">2</option
  <option disabled="disabled" value="3">3</option
  <option value="4">4</option
</select>

【问题讨论】:

    标签: javascript jquery html forms


    【解决方案1】:

    对于您给出的示例,我会使用:

    $("select option:not([disabled])").first().attr("selected", "selected");

    如果您的选择具有特定 ID(例如“#foo”):

    $("#foo option:not([disabled])").first().attr("selected", "selected");

    【讨论】:

    • 我在几分钟前将 sn-p 从.first 编辑为.first() 您使用的是旧代码吗?
    • 在您的 html 中,option 标签实际上是否以 &lt;/option 结尾?看起来他们缺少右括号(应该是&lt;/option&gt;
    • 这在 Safari 和可能的其他浏览器中不起作用。 Mpen 对 :enabled:first 的回答虽然有效。这是一个代码笔示例codepen.io/martinkrulltott/pen/zrKvRj
    • 使用attr() 不可靠。它可能不会直观地更新选择字段。但是,您可以改为使用 val() 显式更改 select 的值。像这样:$('select').val( availableOptionValue ); 或使用prop() 而不是attr()
    【解决方案2】:

    比其他解决方案干净一点:

    $('#select_id').find('option:enabled:first').prop('selected',true);
    

    【讨论】:

      【解决方案3】:
      $('#id-for-select option:not(:disabled):first').click()
      

      【讨论】:

      • 选择器的末尾不会有 :first 吗?
      • 嘿,是的。我对此效果的编辑与您的评论条目交叉。
      • 你需要为选择标签设置一个ID;这可以是任何你喜欢的,并用它替换我的示例中的id-for-select
      【解决方案4】:

      试试这个:

      $('#select-id-here option:enabled').first().attr('selected', 'selected');
      

      【讨论】:

        【解决方案5】:

        设置选项的选中属性:

        <option id="value2" value="2">2</option>
        
        document.getElementById('value2').selected = true;
        

        【讨论】:

        • 我认为关键是事先不知道哪个是第一个启用的值...
        猜你喜欢
        • 1970-01-01
        • 2011-10-27
        • 2017-01-26
        • 1970-01-01
        • 2018-12-29
        • 2022-11-10
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        相关资源
        最近更新 更多