简体   繁体   English

根据多选选择显示/隐藏下拉菜单

[英]Show/hide dropdown based on Multiselect selection

I have the following HTML. 我有以下HTML。

<select id="segment_c" name="segment_c[]" multiple="true" size="6" style="width:150" title="" tabindex="0">
<option label="" value="" selected="selected"></option>
<option label="Mobile1" value="Mobile1">Mobile1</option>
<option label="Mobile2" value="Mobile2">Mobile2</option>
<option label="Mobile3" value="Mobile3">Mobile3</option>
</select>


<select name="Mobile1_c" id="Mobile1_c" title="">
<option label="" value=""></option>
<option label="Samsung" value="Samsung">Samsung</option>
<option label="Nokia" value="Nokia">Nokia</option>
</select>

<select name="Mobile2_c" id="Mobile2_c" title="">
<option label="" value="" selected="selected"></option>
<option label="Samsung" value="Samsung">Samsung</option>
<option label="Nokia" value="Nokia">Nokia</option>
</select>

<select name="Mobile3_c" id="Mobile3_c" title="">
<option label="" value=""></option>
<option label="Motorola" value="Motorola">Motorola</option>
<option label="Nokia" value="Nokia">Nokia</option>
</select>

This is a Multiselect List 这是一个多选列表

I needed help in jQuery in the following. 我在下面的jQuery中需要帮助。

I would like to iterate the multiselect (id="segment_c") such that if value="Mobile1" and value="Mobile2" and value="Mobile3" is selected then show dropdown with id="Mobile1_c" and id="Mobile2_c" and id="Mobile3" 我想迭代multiselect (id="segment_c")使得如果value="Mobile1" value="Mobile2" value="Mobile3"选中 ,那么显示下拉与id="Mobile1_c"id="Mobile2_c"id="Mobile3"

Basically show/hide dropdown based on value selected in multiselect. 基本上基于多选中选择的值来显示/隐藏下拉菜单。

Thanks in advance. 提前致谢。

John 约翰

Notice that values from multiple select are stored inside an array. 请注意,来自多个选择的值存储在数组内。

$(document).ready(function () {
    function hideAll() {
        $('#Mobile1_c,#Mobile2_c, #Mobile3_c').hide();
    }
    hideAll();

    $('#segment_c').change(function() {
        hideAll();
        var val = $(this).val();
        if (val == "") {
            hideAll();
        } else {
            for (var i = 0; i <= val.length; i++) {
                $('select[name*="' + val[i] + '"]').show();
            }
        }
    });

});

http://jsfiddle.net/4nuAW/2/ http://jsfiddle.net/4nuAW/2/

@Freak_Droid almost has it but I can't comment for lack of rep. @Freak_Droid几乎拥有它,但由于缺少代表,我无法发表评论。

with that implementation you don't need all three selected as requested 使用该实现,您不需要按要求选择全部三个

$('#Mobile1_c,#Mobile2_c, #Mobile3_c').toggle();

$('#segment_c').change(function(){
    //val returns an array not a jquery object so dont prefix with a $
    var val = $(this).val();

    //you may want a more robust check here
    if(val.length === 3){
        $('#Mobile3_c').show();
    }else{
        $('#Mobile3_c').hide();    
    }
});

http://jsfiddle.net/VuN78/1 http://jsfiddle.net/VuN78/1

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM