如何删除除选中项以外的重复选择选项?

时间:2019-06-10 12:34:45

标签: javascript php jquery html

是否可以使用jQuery / javascript在选择下拉列表中删除所选选项的重复项?

我已经尝试在PHP中使用if/else,但这是12个文件的一长行代码。

我也尝试过从这里获得的这段代码

var optionValues =[];
$('#locationList option').each(function(){
   if($.inArray(this.value, optionValues) >-1){
      $(this).remove()
   }else{
      optionValues.push(this.value);
   }
});

这对我不起作用,因为此代码只会删除所有重复项,无论选择了什么

例如,我有这行代码

<select name="select">
<option value="one">One</option>
<option value="two">Two</option>
<option value="three">Three</option>
<option value="one" selected>One</option>
</select>

最后一个option的原因是因为我刚刚从数据库中回显了该值,并将其设置为selected以显示该选择下拉列表的当前值。

我希望输出结果是具有selected属性的选项的重复项将从下拉列表中删除

1 个答案:

答案 0 :(得分:0)

此代码将为您提供帮助。

var obj = {};
$("select").children("option").each(function(){
 let val = $(this).attr("value");
 if(obj[val]){
   if($(this).is(":selected")){
    obj[val].remove();
    obj[val] = $(this);
   }else if(obj[val].is(":selected")){
    $(this).remove()
   }else{
    $(this).remove();
   }
 }
 obj[val] = $(this);
});