如何在单击下拉列表中的复选框时添加输入字段

时间:2017-09-11 03:42:32

标签: javascript html css input drop-down-menu

单击复选框时,我尝试在每个列表项下添加3-4个输入字段。

这是到目前为止的代码,我尝试使用以下show / hide,但我似乎无法找到一种方法使其适用于多个输入字段和每个复选框 切换而不是显示/隐藏也是一种选择,但我不确定如何应用它。

$(".dropdown dt a").on('click', function() {
  $(".dropdown dd ul").slideToggle('fast');
});

$(".dropdown dd ul li a").on('click', function() {
  $(".dropdown dd ul").hide();
});

function getSelectedValue(id) {
  return $("#" + id).find("dt a span.value").html();
}

$(document).bind('click', function(e) {
  var $clicked = $(e.target);
  if (!$clicked.parents().hasClass("dropdown")) $(".dropdown dd ul").hide();
});

$('.mutliSelect input[type="checkbox"]').on('click', function() {

  var title = $(this).closest('.mutliSelect').find('input[type="checkbox"]').val(),
    title = $(this).val() + ",";

  if ($(this).is(':checked')) {
    var html = '<span title="' + title + '">' + title + '</span>';
    $('.multiSel').append(html);
    $(".hida").hide();
  } else {
    $('span[title="' + title + '"]').remove();
    var ret = $(".hida");
    $('.dropdown dt a').append(ret);

  }
});

$(function () {
        $("#when_hidden").click(function () {
            if ($(this).is(":checked")) {
                $("#when_shown").show();
            } else {
                $("#when_shown").hide();
            }
        });
    });
body {
  font: normal 14px/100% "Andale Mono", AndaleMono, monospace;
  color: #fff;
  padding: 50px;
  width: 300px;
  margin: 0 auto;
  background-color: #374954;
}

.dropdown {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

a {
  color: #fff;
}

.dropdown dd,
.dropdown dt {
  margin: 0px;
  padding: 0px;
}

.dropdown ul {
  margin: -1px 0 0 0;
}

.dropdown dd {
  position: relative;
}

.dropdown a,
.dropdown a:visited {
  color: #fff;
  text-decoration: none;
  outline: none;
  font-size: 12px;
}

.dropdown dt a {
  background-color: #4F6877;
  display: block;
  padding: 8px 20px 5px 10px;
  min-height: 25px;
  line-height: 24px;
  overflow: hidden;
  border: 0;
  width: 272px;
}

.dropdown dt a span,
.multiSel span {
  cursor: pointer;
  display: inline-block;
  padding: 0 3px 2px 0;
}

.dropdown dd ul {
  background-color: #4F6877;
  border: 0;
  color: #fff;
  display: none;
  left: 0px;
  padding: 2px 15px 2px 5px;
  position: absolute;
  top: 2px;
  width: 280px;
  list-style: none;
  height: 100px;
  overflow: auto;
}

.dropdown span.value {
  display: none;
}

.dropdown dd ul li a {
  padding: 5px;
  display: block;
}

.dropdown dd ul li a:hover {
  background-color: #fff;
}

button {
  background-color: #6BBE92;
  width: 302px;
  border: 0;
  padding: 10px 0;
  margin: 5px 0;
  text-align: center;
  color: #fff;
  font-weight: bold;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<dl class="dropdown">

  <dt>
    <a href="#">
      <span class="hida">Select</span>    
      <p class="multiSel"></p>  
    </a>
    </dt>

  <dd>
    <div class="mutliSelect">
      <ul>
        <li>
          <input type="checkbox" value="Option1" />Option1</li>


        <li>
          <input type="checkbox" value="Option2" id="when_hidden" />Option2</li>

        <input type="text" id="when_shown" style="display: none" id="usr">
        <li>
          <input type="checkbox" value="Option3" />Option3</li>
        <li>
          <input type="checkbox" value="Option4" />Option4</li>
        <li>
          <input type="checkbox" value="Option5" />Option5</li>
        <li>
          <input type="checkbox" value="Option6" />Option6</li>
      </ul>
    </div>
  </dd>
  <button>Filter</button>
</dl>

1 个答案:

答案 0 :(得分:0)

请查看下面的代码段,其中包含基本功能。您可以根据需要添加更多代码。

$(".dropdown dt a").on('click', function() {
  $(".dropdown dd ul").slideToggle('fast');
});

$(".dropdown dd ul li a").on('click', function() {
  $(".dropdown dd ul").hide();
});

$('.list').on('click', '[id^="opt"]', function() {
  if ($(this).is(':checked')) {
    html = '<ul class="input-list" style="list-style-type: none;">';
    html += '<li><input type="text" class="sub-input" id="input-' + $(this).attr('id') + '"></li>';
    html += '</ul>';
    $(this).parent('li').append(html);
    $('.multiSel').append($(this).val() + ', ');
  } else {
    $(this).next('ul').remove();
    $('.multiSel').html($('.multiSel').html().replace($(this).val()+', ',''));
  }
})
body {
  font: normal 14px/100% "Andale Mono", AndaleMono, monospace;
  color: #fff;
  padding: 50px;
  width: 300px;
  margin: 0 auto;
  background-color: #374954;
}

.dropdown {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

a {
  color: #fff;
}

.dropdown dd,
.dropdown dt {
  margin: 0px;
  padding: 0px;
}

.dropdown ul {
  margin: -1px 0 0 0;
}

.dropdown dd {
  position: relative;
}

.dropdown a,
.dropdown a:visited {
  color: #fff;
  text-decoration: none;
  outline: none;
  font-size: 12px;
}

.dropdown dt a {
  background-color: #4F6877;
  display: block;
  padding: 8px 20px 5px 10px;
  min-height: 25px;
  line-height: 24px;
  overflow: hidden;
  border: 0;
  width: 272px;
}

.dropdown dt a span,
.multiSel span {
  cursor: pointer;
  display: inline-block;
  padding: 0 3px 2px 0;
}

.dropdown dd ul.list {
  background-color: #4F6877;
  border: 0;
  color: #fff;
  display: none;
  left: 0px;
  padding: 2px 15px 2px 5px;
  position: absolute;
  top: 2px;
  width: 280px;
  list-style: none;
  height: 100px;
  overflow: auto;
}

.dropdown span.value {
  display: none;
}

.dropdown dd ul li a {
  padding: 5px;
  display: block;
}

.dropdown dd ul li a:hover {
  background-color: #fff;
}

button {
  background-color: #6BBE92;
  width: 302px;
  border: 0;
  padding: 10px 0;
  margin: 5px 0;
  text-align: center;
  color: #fff;
  font-weight: bold;
}
<dl class="dropdown">
  <dt>
    <a href="#">
      <span class="hida">Select</span>    
      <p class="multiSel"></p>  
    </a>
  </dt>
  <dd>
    <div class="mutliSelect">
      <ul class="list">
        <li><input type="checkbox" id="opt1" value="Option1" />Option1</li>
        <li><input type="checkbox" id="opt2" value="Option2" />Option2</li>
        <li><input type="checkbox" id="opt3" value="Option3" />Option3</li>
        <li><input type="checkbox" id="opt4" value="Option4" />Option4</li>
        <li><input type="checkbox" id="opt5" value="Option5" />Option5</li>
      </ul>
    </div>
  </dd>
  <button>Filter</button>
</dl>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>