我有一个 asp.net 下拉列表和一个 asp.net 按钮控件。每次单击该按钮时,都会生成一个新的下拉列表,其中包含除先前选择的值之外的所有值。
例如:如果我从值列表 {a,b,c} 中选择“a”,然后单击按钮,我应该会得到一个包含值 {b,c} 的新下拉列表。
尽管我能够克隆下拉列表值,但我不知道如何通过删除所选值来过滤值。
编辑
这是场景
- 我一开始只有 1 个下拉列表(有 5 个选项)=> 1,2,3,4,5 -> 默认情况下会选择第一个选项。
- 我选择选项 5(在选择列表 #2 中)
- 我点击克隆 -> 添加新列表 (#3),仅包含选项 2、3、4
- 我选择选项 2(在选择列表 #3 中)
- 我点击克隆 -> 使用选项 3,4 创建新列表 (#4)
- ..等等。
这是我的代码:
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="ddlCityName" runat="server" class="ddlClone" DataTextField="City" DataValueField="City" CssClass=""></asp:DropDownList>
<asp:Button ID="btnClone" runat="server" Text="Clone" />
</div>
<div id="container">
</div>
</form>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$("[id*=btnClone]").bind("click", function () {
var index = $("#container select").length + 1;
var ddl = $("[id$=ddlCityName]").clone();
ddl.attr("id", "ddlCityName_" + index);
ddl.attr("name", "ddlCityName_" + index);
$("#container").append(ddl);
$("#container").append("<br /><br />");
return false;
});
});
</script>
最佳答案
您可以获取所选值并将其从克隆后的新选择中删除,如下所示:
$(ddl).find("option[value='"+selVal+"']").remove();
这是一个带有运行示例的 jsFiddle:https://jsfiddle.net/ntvo173q/
我更新了 jsFiddle 以删除所有以前选择的项目,只需查看:
我所做的是获取所有选定的值并从新选择中删除:
var ddl = $('#sel').clone();
$('select').each(function() {
$(ddl).find("option[value='"+$(this).val()+"']").remove();
});
关于javascript - 克隆到新的动态生成的下拉列表后,删除先前选择中的选定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31550115/