【问题标题】:jQuery find option in Select with empty/null value remove it and select the first option after it with a valuejQuery find option in Select with empty/null value remove it and select the first option after it with a value
【发布时间】:2016-01-20 14:45:54
【问题描述】:

总而言之,我想从 SELECT 输入中删除所有空选项。选择是根据它接收到的对象从其他人编写的脚本动态生成的。我的问题是有时对象有空值,给我留下了一个选择选项集,留下了一些不足之处。

无论如何,几乎每次集合中的第一个选项都是空的。所以我想删除它并将selected="selected" 应用于删除第一个选项后出现的第一个选项。同时删除任何其他具有空值的可能性。

所以在测试我想出的最初概念时

$(select).each(function(){
                if ($(this+' option:selected').val() == '')
                {
                    //this assumes that your empty value is ''
                    $(this).remove();
                }
            });

这似乎删除了整个选择,我知道它的原因this 被定义为选择本身。

我也试过 $(select +'option[value=""]').remove();

目前我只是想让它删除具有空值的选项,在我能做到这一点之后,我将弄清楚我如何正式选择列表中的第一项,就 DOM 而言。

还值得一提的是,“选择”传递的变量是先前在函数中定义的,因此它适用于该部分的概念。只是这么说,所以没有人认为我有点把它与其他东西混淆了。

【问题讨论】:

    标签: jquery forms


    【解决方案1】:
    • 您可以使用.filter() 过滤掉空的选项元素并一次性删除它们

    • 使用.prop() 设置特殊属性,例如selected

    代码:

    $('select option')
        .filter(function() {
            return !this.value || $.trim(this.value).length == 0;
        })
       .remove();
    
    $('select option')
        .first()
        .prop('selected', true);​
    

    DEMO

    【讨论】:

      【解决方案2】:

      这可以更容易地完成:

      Element.find('option[value=""]').remove();
      

      【讨论】:

      • 对于任何想知道的人来说,这不适用于写为“”的选项,因为它们根本没有值属性。这里的细微差别是 $("<option></option>").attr("value") == undefined$("<option value=''></option>").attr("value") == ''
      • length 表示删除了具有 value='' 的选择下拉选项,但我可以在浏览器和调试 html 检查器中看到该选项。现在为我工作得心应手。谢谢。
      【解决方案3】:

      POJS 来救援!

      function fixSelectOptions(SelectId){
       var sel = document.getElementById(SelectId);
       for(var i = 0; i < sel.options.length; i++){
        if(sel.options[i].value === ""){
         sel.remove(i--);//decrease i to preserve future index references after removal
        }
       }
       sel.options.selectedIndex = 0;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-27
        • 2022-12-01
        • 2017-06-29
        • 2022-12-02
        • 1970-01-01
        • 2015-01-18
        相关资源
        最近更新 更多