简体   繁体   English

从动态生成的下拉菜单中删除一个选项

[英]Remove an option from dynamically-generated drop down menu

I have a button that generates a dynamic form that contains 3 dropdowns.我有一个生成包含 3 个下拉列表的动态表单的按钮。 The selected options from the first form and the new generated form should not be duplicates.从第一个表单和新生成的表单中选择的选项不应重复。 Same goes for all the forms.所有 forms 也是如此。 What I want is to remove the option from the last dropdown to avoid duplication.我想要的是从最后一个下拉列表中删除该选项以避免重复。 For example if I select "option A" and "2nd option A" and "3rd option A" from the first form, and I select "option A" and "2nd option A" from the second form, the 3rd drop down from this 2nd form shouldn't have "3rd option A".例如,如果我 select “选项 A” 和 “第二选项 A” 和 “第三选项 A” 从第一个表格,我 select “选项 A” 和 “第二个选项 A” 从第二个表格,第三个下拉从这个第二种形式不应该有“第三种选择A”。 So basically I want jQuery to delete option of the 3rd drop down from the newly generated form.所以基本上我希望 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>

You can achieve this using the element data-child/group as identifiers.您可以使用元素data-child/group作为标识符来实现此目的。 Ill show you an example of what you requested.我将向您展示您所要求的示例。 It will only show values based on the selected value in one of the select-boxes.它只会显示基于其中一个选择框中所选值的值。

You will also need to edit your #addform function to make my example work with your dynamically added input fields.您还需要编辑您的#addform function 以使我的示例适用于您动态添加的输入字段。

 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>

Advanced option menu (Hide/show based on selection)高级选项菜单(根据选择隐藏/显示)

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM