Javascript/jQuery:确保在下拉列表中添加唯一选项
我有一个HTML下拉菜单和一个文本元素,允许用户向菜单添加新选项。我想确保添加的每个选项都是唯一的。下面两行是我想到的第一个可行的选项(对于所有选项,optionvalue=innHTML)。我想知道是否有一个更优雅的解决方案——第二行看起来很笨重。它也不处理新名称字符串中的空格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+"]")
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!");
}
});
});
});