我有一个HTML下拉菜单以及一个允许用户向菜单添加新选项的文本元素。我想确保添加的每个选项都是唯一的。以下两行是我认为有效的第一个选项(选项值=所有选项的innHTML)。我想知道是否有更优雅的解决方案 - 第二条线看起来很笨重。它也不处理new_name字符串中的空格。
var new_name = document.getElementById("preset_name").value
var unique_name = $("option[value="+new_name+"]").length === 0 ? true : false
答案 0 :(得分:0)
结合关于问题的两条评论,您可以简化为1行:
var unique_name = $("option[value="+$("#preset_name").val()+"]").length === 0;
您不需要三元组,因为===会产生真值或假值。除非您再次需要测试值,否则您甚至不需要将其存储在变量中 - 您只需使用jQuery检索它。
答案 1 :(得分:0)
你需要这样的东西吗?
HTML:
<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>
jQuery的:
$(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!");
}
});
});
});