在第一次下拉选择后显示第二次下拉的内容。

时间:2014-04-21 10:09:56

标签: javascript php jquery html drop-down-menu

我设法获得一个下拉列表,根据选择填充第二个下拉列表。

HTML here:

    <select size="1" id="BodyPart" title="" name="BodyPart">
<option value="">-Select Body Part-</option>
<option value="chest">Chest</option>
<option value="biceps">Biceps</option>
</select>

<div class="container">

<div class="chest">
<select class="exercise_select">
<option value ="__select__">SELECT</option>
<option value ="chestpress">Chest Press</option>
<option value ="inclinechestpress">Incline Chest Press</option>
</select>


<div class="chest">
<div class="chestpress exercise_name">
CHEST PRESS
</div>
<div class="inclinechestpress exercise_name">
INCLINE CHEST PRESS    
</div>
</div>
</div>

<div class="biceps">
<select class="exercise_select">
<option value ="__select__">SELECT</option>
<option value="bicepcurls">Bicep Curls</option>
<option value="hammercurls">Hammer Curls</option>
</select>

<div class="biceps">
<div class="bicepcurls exercise_name">
BICEP CURLS
</div>
<div class="hammercurls exercise_name">
HAMMER CURLS   
</div>
</div>
</div>

这里的JavaScript:

<Script language='JavaScript'>
$(document).ready(function() {
    var elements = $('div.container').children().hide();
    $('#BodyPart').change(function() {
        elements.hide();
        var value = $(this).val();
        if (value.length) { // if somethings' selected
            elements.filter('.' + value).show(); // show the ones we want
    }
});

    $('.exercise_select').change(function(){
        console.log(123);
        $('.exercise_name').hide();
        var subele=$('.exercise_name');
        subele.filter('.'+$(this).val()).show();
    });
});
</script>

正如你所看到的,当&#39;胸部&#39;或者&#39; Biceps&#39;如果选中,则可以在第二个下拉列表中选择对该身体部位的相对练习。我想显示特定于第二个选择的信息(正如你可以看到我在大写字母中使用练习的标题来表示虚拟文本),但由于某些原因,所有内容都显示UNTIL,选择了第二个选项。

例如,我选择“胸部”,然后在我选择第二个下拉列表中的两个练习中的任何一个之前,两个虚拟文本都会出现。一旦我选择锻炼,他们只会挑出一个。有没有办法让这些虚拟文本在选择其中一个选项之前保持不可见?

非常感谢你的时间。

1 个答案:

答案 0 :(得分:1)

在第一个下拉列表更改事件中包含$('.exercise_name').hide();

$('#BodyPart').change(function() {
    elements.hide();
    var value = $(this).val();
    if (value.length) { // if somethings' selected
        elements.filter('.' + value).show(); // show the ones we want
}
    $('.exercise_name').hide();
});

Demo