我有一个返回重复项的下拉列表。我不知道为什么它会返回重复。 这是我下拉列表的控件。
@Html.DropDownList("procDateId", Model.GetEmpHoursDateRange.EmphoursdateSelectList, Model.GetEmpHoursDateRange.selectedEmplhoursdate, new { id = "procDateId" })
我希望能够在页面加载后删除重复项。 我用警报测试了下面的代码,并且能够访问document.ready
$(document).ready(function () {
alert("here you go !!!");
[].slice.call($('#procDateId').option)
.map(function (a) {
if (this[a.innerText]) {
$('#procDateId'.option).removeChild(a);
} else {
this[a.innerText] = 1;
}
}, {});
});
这是我的下拉列表正在呈现的html。
<select id="procDateId" name="procDateId">
<option value>1/11/2017</option>
<option value>1/11/2017</option>
<option value>1/10/2017</option>
<option value>1/9/2017</option>
</select>
我的代码上面没有删除重复项。没运气。请帮助。
答案 0 :(得分:1)
该选项的jQuery选择器显示不正确:$('#procDateId').option
- &gt; ('#procDateId option')
此外,您可以直接在选项上调用remove
jsfiddle:https://jsfiddle.net/db9zczr0/
答案 1 :(得分:1)
加倍的原因是您使用defaultOption
= Model.GetEmpHoursDateRange.EmphoursdateSelectList
的重载。返回的值是重复的。
默认选项显示在列表的开头,其值为 空。默认选项用于表示没有选项 从列表中选择,例如当下拉控件表示时 可选参数。
来自https://msdn.microsoft.com/en-us/library/gg548012(v=vs.111).aspx
所以你会想要使用不同的重载,例如
HtmlHelper.DropDownList方法(String,IEnumerable, 对象)
然后告诉视图使用保存的会话值在IEnumerable<SelectListItem>
的控制器循环中显示所选选项,并为匹配项设置Selected = true
。