How to create checkbox inside dropdown?

后端 未结 7 1307
独厮守ぢ
独厮守ぢ 2020-12-01 14:20

I want to create a multiple selection dropbox list. Actually I have to select more than one option using a dropdown menu. When I simply do this as shown bellow:



        
相关标签:
7条回答
  • 2020-12-01 14:36

    Multiple drop downs with checkbox's and jQuery.

    <div id="list3" class="dropdown-check-list" tabindex="100">
    <span class="anchor">Which development(s) are you interested in?</span>
      <ul class="items">
          <li><input id="answers_2529_the-lawns" name="answers[2529][answers][]" type="checkbox" value="The Lawns"/><label for="answers_2529_the-lawns">The Lawns</label></li>
          <li><input id="answers_2529_the-residence" name="answers[2529][answers][]" type="checkbox" value="The Residence"/><label for="answers_2529_the-residence">The Residence</label></li>
      </ul>
    </div>
    
    <style>
    .dropdown-check-list{
    display: inline-block;
    width: 100%;
    }
    .dropdown-check-list:focus{
    outline:0;
    }
    .dropdown-check-list .anchor {
    width: 98%;
    position: relative;
    cursor: pointer;
    display: inline-block;
    padding-top:5px;
    padding-left:5px;
    padding-bottom:5px;
    border:1px #ccc solid;
    }
    .dropdown-check-list .anchor:after {
    position: absolute;
    content: "";
    border-left: 2px solid black;
    border-top: 2px solid black;
    padding: 5px;
    right: 10px;
    top: 20%;
    -moz-transform: rotate(-135deg);
    -ms-transform: rotate(-135deg);
    -o-transform: rotate(-135deg);
    -webkit-transform: rotate(-135deg);
    transform: rotate(-135deg);
    }
    .dropdown-check-list .anchor:active:after {
    right: 8px;
    top: 21%;
    }
    .dropdown-check-list ul.items {
    padding: 2px;
    display: none;
    margin: 0;
    border: 1px solid #ccc;
    border-top: none;
    }
    .dropdown-check-list ul.items li {
    list-style: none;
    }
    .dropdown-check-list.visible .anchor {
    color: #0094ff;
    }
    .dropdown-check-list.visible .items {
    display: block;
    }
    </style>
    
    <script>
    jQuery(function ($) {
            var checkList = $('.dropdown-check-list');
            checkList.on('click', 'span.anchor', function(event){
                var element = $(this).parent();
    
                if ( element.hasClass('visible') )
                {
                    element.removeClass('visible');
                }
                else
                {
                    element.addClass('visible');
                }
            });
        });
    </script>
    
    0 讨论(0)
  • 2020-12-01 14:37

    Very simple code with Bootstrap and JQuery without any additionnal javascript code :

    HTML :

    <div class="dropdown">
      <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
        Dropdown button
      </button>
      <form class="dropdown-menu" aria-labelledby="dropdownMenuButton">
        <label class="dropdown-item"><input type="checkbox" name="" value="one">First checkbox</label>
        <label class="dropdown-item"><input type="checkbox" name="" value="two">Second checkbox</label>
        <label class="dropdown-item"><input type="checkbox" name="" value="three">Third checkbox</label>
      </form>
    </div>
    

    CSS :

    .dropdown-menu label {
      display: block;
    }
    

    https://codepen.io/funkycram/pen/joVYBv

    0 讨论(0)
  • 2020-12-01 14:38

    var expanded = false;
    
    function showCheckboxes() {
      var checkboxes = document.getElementById("checkboxes");
      if (!expanded) {
        checkboxes.style.display = "block";
        expanded = true;
      } else {
        checkboxes.style.display = "none";
        expanded = false;
      }
    }
    .multiselect {
      width: 200px;
    }
    
    .selectBox {
      position: relative;
    }
    
    .selectBox select {
      width: 100%;
      font-weight: bold;
    }
    
    .overSelect {
      position: absolute;
      left: 0;
      right: 0;
      top: 0;
      bottom: 0;
    }
    
    #checkboxes {
      display: none;
      border: 1px #dadada solid;
    }
    
    #checkboxes label {
      display: block;
    }
    
    #checkboxes label:hover {
      background-color: #1e90ff;
    }
    <form>
      <div class="multiselect">
        <div class="selectBox" onclick="showCheckboxes()">
          <select>
            <option>Select an option</option>
          </select>
          <div class="overSelect"></div>
        </div>
        <div id="checkboxes">
          <label for="one">
            <input type="checkbox" id="one" />First checkbox</label>
          <label for="two">
            <input type="checkbox" id="two" />Second checkbox</label>
          <label for="three">
            <input type="checkbox" id="three" />Third checkbox</label>
        </div>
      </div>
    </form>

    0 讨论(0)
  • 2020-12-01 14:43

    Here is a simple dropdown checklist:

    var checkList = document.getElementById('list1');
    checkList.getElementsByClassName('anchor')[0].onclick = function(evt) {
      if (checkList.classList.contains('visible'))
        checkList.classList.remove('visible');
      else
        checkList.classList.add('visible');
    }
    .dropdown-check-list {
      display: inline-block;
    }
    
    .dropdown-check-list .anchor {
      position: relative;
      cursor: pointer;
      display: inline-block;
      padding: 5px 50px 5px 10px;
      border: 1px solid #ccc;
    }
    
    .dropdown-check-list .anchor:after {
      position: absolute;
      content: "";
      border-left: 2px solid black;
      border-top: 2px solid black;
      padding: 5px;
      right: 10px;
      top: 20%;
      -moz-transform: rotate(-135deg);
      -ms-transform: rotate(-135deg);
      -o-transform: rotate(-135deg);
      -webkit-transform: rotate(-135deg);
      transform: rotate(-135deg);
    }
    
    .dropdown-check-list .anchor:active:after {
      right: 8px;
      top: 21%;
    }
    
    .dropdown-check-list ul.items {
      padding: 2px;
      display: none;
      margin: 0;
      border: 1px solid #ccc;
      border-top: none;
    }
    
    .dropdown-check-list ul.items li {
      list-style: none;
    }
    
    .dropdown-check-list.visible .anchor {
      color: #0094ff;
    }
    
    .dropdown-check-list.visible .items {
      display: block;
    }
    <div id="list1" class="dropdown-check-list" tabindex="100">
      <span class="anchor">Select Fruits</span>
      <ul class="items">
        <li><input type="checkbox" />Apple </li>
        <li><input type="checkbox" />Orange</li>
        <li><input type="checkbox" />Grapes </li>
        <li><input type="checkbox" />Berry </li>
        <li><input type="checkbox" />Mango </li>
        <li><input type="checkbox" />Banana </li>
        <li><input type="checkbox" />Tomato</li>
      </ul>
    </div>

    0 讨论(0)
  • 2020-12-01 14:56

    You can always use multiple or multiple = "true" option with a select tag, but there is one jquery plugin which makes it more beautiful. It is called chosen and can be found here.

    This fiddle-example might help you to get started

    Thank you.

    0 讨论(0)
  • 2020-12-01 15:01

    This can't be done in just HTML (with form elements into option elements).

    Or you can just use a standard select multiple field.

    <select multiple>
      <option value="a">a</option>
      <option value="b">b</option>
      <option value="c">c</option>
    </select>
    
    0 讨论(0)
提交回复
热议问题