Javascript/jQuery:确保在下拉列表中添加唯一选项

Javascript/jQuery:确保在下拉列表中添加唯一选项,javascript,jquery,drop-down-menu,Javascript,Jquery,Drop Down Menu,我有一个HTML下拉菜单和一个文本元素,允许用户向菜单添加新选项。我想确保添加的每个选项都是唯一的。下面两行是我想到的第一个可行的选项(对于所有选项,optionvalue=innHTML)。我想知道是否有一个更优雅的解决方案——第二行看起来很笨重。它也不处理新名称字符串中的空格 var new_name = document.getElementById("preset_name").value var unique_name = $("option[value="+new_name+"]")

我有一个HTML下拉菜单和一个文本元素,允许用户向菜单添加新选项。我想确保添加的每个选项都是唯一的。下面两行是我想到的第一个可行的选项(对于所有选项,optionvalue=innHTML)。我想知道是否有一个更优雅的解决方案——第二行看起来很笨重。它也不处理新名称字符串中的空格

var new_name = document.getElementById("preset_name").value
var unique_name = $("option[value="+new_name+"]").length === 0 ? true : false 

结合对该问题的两条评论,您可以简化为一行:

var unique_name = $("option[value="+$("#preset_name").val()+"]").length === 0;

您不需要三元数,因为===会产生真值或假值。除非您再次需要测试值,否则您甚至不需要将其存储在变量中—您可以使用jQuery检索它。

您需要这样的东西吗

HTML:


出于好奇,为什么要使用纯JavaScript和jQuery?看起来还可以。我打赌不需要三元数
unique_name=$(“选项[value=“+new_name+”))。长度===0
应自行指定true或false。是的,应该可以这样做。我想我想知道的是,是否有一种非常简洁的方法来获取一组选项值,用于成员资格测试。
<select id="myselect">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select> 
<input id="newoption" type="text" />
<button id="check">Check</button>
$(document).ready(function() {
    $("button#check").click(function() {
        var newOpt = $("input#newoption").val();
        $("#myselect option").each(function(){
            var text = $(this).val();
            if(newOpt.length>0 && text.indexOf(newOpt)!=-1){
                console.log("already present!");
            }
        });
    });
});