javascript - 增加类型编号后动态添加下拉菜单

标签 javascript jquery

我正在尝试根据在数字类型的输入字段中选择的数字来添加和删除下拉列表。

增加数字后,我想添加先前创建的下拉列表的另一个克隆。递减后我想再次删除最后一个。让其他人保持各自的值(value)观。

到目前为止,我的代码一直在添加下拉菜单,但它的编码方式并不好。我不知道如何动态删除最后一个元素。

HTML:

<div class="row step2">
    <h3>Aantal deelorganisaties inclusief hoofdorganisatie</h3>
    <p>Kies het aantal deelorganisaties voor wie je het samengestelde lidmaatschap ook wil activeren</p>
    <div>
        <input type="number" name="suborgamount" class="suborgamount" min="0" value="0"/> 
        <i class="fa fa-times suborgpriceperyear">
    </div>
    <div class="headorgdropdownholder col-md-12">
        <p class="col-md-5">Selecteer je eigen organisatie voor het lidmaatschap te activeren:</p>
        <div class="col-sm-12 col-md-4 space filter-fields" style="padding-right: 0">
            <select class="selectpicker" id="orgdropdown" data-live-search="true">
                <?php 
                    foreach ($allorgs as $org) {
                        echo "<option data-tokens=\"$org->name\">orgid: $org->org_id - naam: $org->name</option>";
                    }
                ?>
            </select>
        </div>
    </div>
    <div class="suborgdropdownholder col-md-12">

    </div>
</div>

Jquery:

$(".suborgamount").bind('keyup mouseup', function () {
    addRemoveDropdownList();
});


function addRemoveDropdownList() {
    var container = $("<p class='col-md-4'>Selecteer deelorganisatie(s) waarvoor het lidmaatschap ook geactiveerd moet worden:</p>");
    $('.suborgdropdownholder').html(container);

    // Finding total number of elements added
    var total_element = $('input[name=suborgamount]').val();

    // last <div> with element class id
    var lastid = $(".selectpicker:last").attr("id");
    var split_id = lastid.split("_");
    var nextindex = Number(split_id[1]) + 1;
    if (isNaN(nextindex)) {
        nextindex = 1;
    }

    var newselect = $('#orgdropdown').clone().attr({
        style:'display: block !important',
        id:'suborgdropdown_'+nextindex
    });

    $(".selectpicker:last").after(newselect);
}

JSFiddle 显示问题 jsfiddle

最佳答案

每次输入数字发生变化时,使用此 JS 代码都会添加下拉菜单:

$(document).ready(function(){
  var prevCount = 0;

  $(".suborgamount").bind('keyup mouseup', function () {
    var total_element = $('input[name=suborgamount]').val();
    if (prevCount != total_element){
        addRemoveDropdownList();    
    }
  });


  function addRemoveDropdownList() {
    var total_element = $('input[name=suborgamount]').val();
    prevCount = total_element;
    var selectPickers = $(".suborgdropdownholder > select");
    var container = $("<p class='col-md-4'>Selecteer deelorganisatie(s) waarvoor het lidmaatschap ook geactiveerd moet worden:</p>");
    $('.suborgdropdownholder').html(container);
    $(".selectpicker").not(':first').remove();
    var nextIndex = 0;
    for (var i = 0; i < total_element; i++){
      var newselect = $('#orgdropdown').clone().attr({
        style:'display: block !important',
        id:'suborgdropdown_'+nextIndex
      });
      if (selectPickers[nextIndex]){
          newselect.find('option[value='+ $(selectPickers[nextIndex]).val() +']').prop('selected', true);
      }
      $('.suborgdropdownholder').append(newselect);
      nextIndex++;
    }
  }
});

关于javascript - 增加类型编号后动态添加下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50229186/

相关文章:

javascript - 滚动后删除 anchor 链接 - 也适用于其他页面的链接

javascript - 简单的 jQuery 脚本在 Chrome 中工作,在 IE 中损坏

javascript - 找到某个item的最后一个类,并根据点击的item发布数据

javascript - 按需执行 jQuery 效果。是否可以?

javascript - 单击动态链接时填充 jQuery Mobile 页面内容

javascript - 如何更改 sails.js 属性模型中的日期格式?

javascript - 控制台日志不记录

javascript - Three.js:Raycast 具有空的相交数组

javascript - 在 ajax HTML 响应中查找 body 标记

jquery - 最初显示 div : Jquery