【问题标题】:Remove an option from dynamically-generated drop down menu从动态生成的下拉菜单中删除一个选项
【发布时间】:2020-07-23 08:51:33
【问题描述】:

我有一个按钮,可以生成一个包含 3 个下拉菜单的动态表单。从第一个表单和新生成的表单中选择的选项不应重复。所有表格也是如此。我想要的是从最后一个下拉列表中删除该选项以避免重复。例如,如果我从第一个表单中选择“选项 A”和“第二个选项 A”和“第三个选项 A”,并从第二个表单中选择“选项 A”和“第二个选项 A”,则从这里下拉第三个第二种形式不应该有“第三种选择A”。所以基本上我希望 jQuery 从新生成的表单中删除第三个下拉选项。

var i = 1;
$("#addForm").click(function() {
  i++;
  $("#myForm").append('<select id="dropdown1' + i + '"><option value="option A">option A</option><option value="option B">option B</option><option value="option C">option C</option></select><select id="dropdown2' + i + '"><option value="2nd option A">2nd option A</option><option value="2nd option B">2nd option B</option><option value="2nd option C">2nd option C</option></select><select id="dropdown3' + i + '">option value="3rd option A">3rd option A</option><option value="3rd option B">3rd option B</option><option value="3rd option C">3rd option C</option></select>');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form method="post">
  <div id="myForm">
    <select id="dropdown11">
      <option value="option A">option A</option>
      <option value="option B">option B</option>
      <option value="option C">option C</option>
    </select>
    <select id="dropdown21">
      <option value="2nd option A">2nd option A</option>
      <option value="2nd option B">2nd option B</option>
      <option value="2nd option C">2nd option C</option>
    </select>
    <select id="dropdown31">
      <option value="3rd option A">3rd option A</option>
      <option value="3rd option B">3rd option B</option>
      <option value="3rd option C">3rd option C</option>
    </select>
  </div>

  <button type="button" id="addForm">ADD</button>
  <button type="submit">SUBMIT</button>
</form>

【问题讨论】:

  • edit您的问题包括您对该问题所做的研究,以及您基于该研究所做的尝试。

标签: javascript html jquery


【解决方案1】:

您可以使用元素data-child/group 作为标识符来实现此目的。 我将向您展示您所要求的示例。它只会根据其中一个选择框中的选定值显示值。

您还需要编辑您的 #addform 函数,以使我的示例适用于您动态添加的输入字段。

var i = 1;
$("#addForm").click(function() {
  i++;
  $("#myForm").append('<select id="dropdown1' + i + '"><option value="option A">option A</option><option value="option B">option B</option><option value="option C">option C</option></select><select id="dropdown2' + i + '"><option value="2nd option A">2nd option A</option><option value="2nd option B">2nd option B</option><option value="2nd option C">2nd option C</option></select><select id="dropdown3' + i + '">option value="3rd option A">3rd option A</option><option value="3rd option B">3rd option B</option><option value="3rd option C">3rd option C</option></select>');
});

$("[data-child]").change(function() {
  const selectedGroup = $(this).val();
  var $childSelect = $("#" + $(this).attr("data-child"));
  value = $childSelect.find("option").hide()
    .filter(function(i, e) {
      return $(e).val().startsWith(selectedGroup)
    }).show().eq(0).val();
  $childSelect.val(value);
  $childSelect.trigger("change");
});
$("[data-child]").eq(0).trigger("change");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form method="post">
  <div id="myForm">
    <select data-child="dropdown11">
      <option value="A">option A</option>
      <option value="B">option B</option>
      <option value="C">option C</option>
    </select>
    <select id="dropdown11" data-child="dropdown21">
      <option data-group="A" value="AA">2nd option A</option>
      <option data-group="B" value="BB">2nd option B</option>
      <option data-group="C" value="CC">2nd option C</option>
    </select>
    <select id="dropdown21" data-child="dropdown31">
      <option data-group="AA" value="AAA">3rd option A</option>
      <option data-group="BB" value="BBB">3rd option B</option>
      <option data-group="CC" value="CCC">3rd option C</option>
    </select>
  </div>

  <button type="button" id="addForm">ADD</button>
  <button type="submit">SUBMIT</button>
</form>

高级选项菜单(根据选择隐藏/显示)

https://codepen.io/crezzur/pen/NWxVqYO

【讨论】:

    猜你喜欢
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    • 2015-03-28
    相关资源
    最近更新 更多