jQuery根据数组值隐藏下拉列表的选项

时间:2015-01-08 11:15:21

标签: javascript jquery drop-down-menu

我有一个types数组如下所示,我尝试只启用types数组中存在的Dropdown选项

var types = ["LEDES 1998B", "LEDES 1998B-INTL"]

在用户界面上,我只需要看到' LEDES 1998B',' LEDES 1998B-INTL'在types中的下拉列表中,必须隐藏其他选项

<select id="FormatType" name="instance_FormatType.id" data-name="Format Type">
<option value="">-- Select --</option>      
    <option value="1">
        LEDES 1998B
    </option>       
    <option value="2">
        LEDES 1998B-INTL
    </option>
    <option value="3">
        LEDES 98BI
    </option>       
    <option value="4">
        Summary
    </option>   

有人可以帮我这样做吗?

4 个答案:

答案 0 :(得分:5)

假设您的阵列格式有效,您可以使用filter检查选项。试试这个:

var types = ["LEDES 1998B", "LEDES 1998B-INTL"];
$('#FormatType option:not(:first)').filter(function() {
    return $.inArray($.trim($(this).text()), types) == -1;
}).remove(); // or possibly hide() depending on your need/browser support

Example fiddle

答案 1 :(得分:2)

Vanilla JS版:

var select = document.getElementById('request5900-instance_qiFormatType');
var types = ["LEDES 1998B", "LEDES 1998B-INTL"];

for( var i=0; i<select.options.length; i++ ){
    var label = select.options[i].innerHTML.trim();
    if( types.indexOf( label ) < 0 ){
        select.removeChild( select.options[i] );
        // need to decrement because indexes change after node removal
        i--;
    }
}

http://jsfiddle.net/xsyab5kt/

答案 2 :(得分:2)

$( "option" ).each(function( index ) {
      if(jQuery.inArray(($( this ).text()), types)!==-1) {
        $("option[value=" + ($(this).attr('val')) + "]").hide();
        } 
});

希望这有帮助!

答案 3 :(得分:0)

您无法隐藏它们,可以删除或禁用

可以通过以下方式禁用它,例如禁用值为3的选项

$("#request5900-instance_qiFormatType>option[value='3']").attr('disabled', true);