Javascript 如果选择了一个选项,则会出现一组新的选项

Javascript if an option is selected than a new sets of option appear

简而言之,我希望当用户选择一个选项时,一组选项会出现在该选项所选择的关系中。

以下是我到目前为止所做的:

HTML:

<form method="" action="">
        <input type="file" placeholder="Upload Project">
        <select id="selectProvider">
            <option disabled selected> Select Training Platform </option>
            <option value="1"> Option 1</option>
            <option value="2"> Option 2 </option>
            <option value="3"> Option 3 </option>
            <option value="4"> Option 4 </option>
            <option value="5"> Option 5 </option>

        </select>
    </form>

JavaScript:

<script>

$(function(){

    if ($('#selectProvider').val(1)) {
      //that's where I stopped
    }

});

</script>

即如果选择选项 1,则会出现以下内容

<select>
    <option> Option 11 </option>
    <option> Option 12 </option>
    <option> Option 13 </option>
</select>

更新:

    <select data-role="1" style="display: none;">
    <option> Option 11 </option>
    <option> Option 12 </option>
    <option> Option 13 </option>
</select>


    <select data-role="2" style="display: none;">
    <option> Option 21 </option>
    <option> Option 22 </option>
    <option> Option 23 </option>
</select>

     <select data-role="3" style="display: none;">
    <option> Option 31 </option>
    <option> Option 32 </option>
    <option> Option 33 </option>
</select>


 <select data-role="4" style="display: none;">
    <option> Option 41 </option>
    <option> Option 42 </option>
    <option> Option 43 </option>
</select>

 <select data-role="5" style="display: none;">
    <option> Option 51 </option>
    <option> Option 52 </option>
    <option> Option 53 </option>
</select>


<script>

$(function(){

    $('#selectProvider').on('change', function(){
        if ($(this).val() == '1') {
            var sel = $('select[data-role=1]');
            sel.show();
        }
        else if ($(this).val() == '2') {
            var sel = $('select[data-role=2]');
            sel.show();
        }

        else if ($(this).val() == '3') {
            var sel = $('select[data-role=3]');
            sel.show();
        }

        else if ($(this).val() == '4') {
            var sel = $('select[data-role=4]');
            sel.show();
        }

            else if ($(this).val() == '5') {
            var sel = $('select[data-role=5]');
            sel.show();
        }

    });

});

</script>

你好,你可以试试这样的方法http://jsfiddle.net/viper_yash/hLg3nq5L/ var city_list=new Array(); city_list[0] = ""; city_list[1] = "b1|b2|b3"; city_list[2]="c1|c2|c3"; city_list[3]="a1|a2|a3"; function fill_city(state,city){ var e2=$("select[name='state'] option:selected").index(); var e3 = document.getElementById(city); e3.length = 0; e3.options[0] = new Option('Select City', ''); e3.selectedIndex = 0; var city_array = city_list[e2].split("|"); for (var i = 0; i < city_array.length; i++) { e3.options[e3.length]= new Option(city_array[i],city_array[i]); } }

我稍微修改了你的 HTML 并更改了事件处理程序,因为立即调用的函数没有意义。

HTML

<form method="" action="">
        <input type="file" placeholder="Upload Project">
        <select id="selectProvider">
            <option disabled selected> Select Training Platform </option>
            <option value="1"> Option 1</option>
            <option value="2"> Option 2 </option>
            <option value="3"> Option 3 </option>
            <option value="4"> Option 4 </option>
            <option value="5"> Option 5 </option>

        </select>
    </form>

    <select data-role="1" style="display: none;">
    <option> Option 11 </option>
    <option> Option 12 </option>
    <option> Option 13 </option>
</select>


    <select data-role="2" style="display: none;">
    <option> Option 21 </option>
    <option> Option 22 </option>
    <option> Option 23 </option>
</select>

     <select data-role="3" style="display: none;">
    <option> Option 31 </option>
    <option> Option 32 </option>
    <option> Option 33 </option>
</select>


 <select data-role="4" style="display: none;">
    <option> Option 41 </option>
    <option> Option 42 </option>
    <option> Option 43 </option>
</select>

编辑(多选)

有关您的新更新代码,请参阅此新 Fiddle。我们只想将 role 存储在一个变量中,并在 switch case 语句中对其进行分析。

$('#selectProvider').on('change', function(){
    var role = $(this).val();
    switchRole(role);
});

function switchRole(role) {
      var sel = $('select[data-role= ' + role + '  ]');
      sel.show();
      hideSelects(role, sel)
};

hideSelects = function(role, selected) {
    var elements = $("select").filter(function() {
        return $(this).data("role") !== undefined;
    });
    var toHide = $(elements).not(selected);
    toHide.hide();
};

我还重构了将其他选择隐藏到它自己的函数中。