Drop down list - display div when clicking an option

前端 未结 2 1317
小鲜肉
小鲜肉 2020-12-21 11:47

You must write a function that \'shows\' the corresponding part of the form depending on what the user has selected. For example, if \'Pizza\' is selected, the div #section2

相关标签:
2条回答
  • 2020-12-21 12:12

    There are plenty of solutions for that. One of the simpliest options is to change your markup a bit and use div IDs.

    HTML:

    <div id="section1">
        <label for="food">What is your favourite type of food?</label>
        <select id="food" onchange="selection(this)">
            <option value="pizza">Pizza</option>
            <option value="mex">Mexican</option>
            <option value="thai">Thai</option>
        </select>
    </div>
    <div id="section_pizza" style="display: none;">
        What is your favourite type of pizza?<br>
        <label for="hawaiian">Hawaiian</label><input type="radio" id="hawaiian">
        <label for="supreme">Supreme</label><input type="radio" id="supreme">
        <label for="vegetarian">Vegetarian</label><input type="radio" id="vegetarian">
    </div>
    

    JavaScript:

    function selection(select) {
        document.getElementById("section_" + select.value).style.display = "block";
    }
    

    However, you can use JQuery library and make it faster and more flexible. You can easily add animation to blocks and add extra functionality.

    HTML:

    <div id="section1">
        <label for="food">What is your favourite type of food?</label>
        <select id="food">
            <option value="pizza">Pizza</option>
            <option value="mex">Mexican</option>
            <option value="thai">Thai</option>
        </select>
    </div>
    <div id="section2" data-type="pizza" style="display: none;">
        What is your favourite type of pizza?<br>
        <label for="hawaiian">Hawaiian</label><input type="radio" id="hawaiian">
        <label for="supreme">Supreme</label><input type="radio" id="supreme">
        <label for="vegetarian">Vegetarian</label><input type="radio" id="vegetarian">
    </div>
    

    JavaScript:

    $("#food").change(function() {
        $("[data-type]").hide();
        $("[data-type='" + this.value + "']").show(1000);
    });
    
    0 讨论(0)
  • 2020-12-21 12:31

    DEMO: http://jsfiddle.net/iambriansreed/rQr6v/

    JavaScript:

    var sections = {
        'pizza': 'section2',
        'mex': 'section3',
        'thai': 'section4'   
    };
    
    var selection = function(select) {
    
        for(i in sections)
            document.getElementById(sections[i]).style.display = "none";    
    
        document.getElementById(sections[select.value]).style.display = "block";
    
    }
    

    Checkout the demo. Replace the section3 and section4 divs with actual content.

    0 讨论(0)
提交回复
热议问题