从下拉列表中删除重复项

时间:2017-01-13 00:00:53

标签: javascript jquery

我有一个返回重复项的下拉列表。我不知道为什么它会返回重复。 这是我下拉列表的控件。

    @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>

我的代码上面没有删除重复项。没运气。请帮助。

2 个答案:

答案 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