我正在使用jquery创建下拉列表的选项。用户将在文本框keyvalue
和keyup()
上输入选项文本,它将添加到<select>
。
例如:如果用户输入字符串大小,则会在下拉列表中添加一个选项,如
<option value="Size">Size</option>
HTML
<input type="text" id="keyvalue" onkeyup="addvaluetoselect()">
<select id="key"></select>
的jQuery
var keyvalue = $('#keyvalue').val();
if ($("#key option[value='"+keyvalue +"']").length == 0)
$('#key').append('<option value="'+keyvalue +'">'+keyvalue +'</option>');
如果用户键入包含双引号或单引号的值,则应将其添加到选项中。但目前它不起作用。我尝试添加
var keyvalue = keyvalue .replace(/(['"])/g, "\\$1");
逃避报价。但是,当我尝试输入尺寸选项时,该选项会像尺寸/&#39> 而不是尺寸&#39;而创建。小号
任何人都可以帮我解决这个问题。提前谢谢。
答案 0 :(得分:3)
不要将其作为原始字符串附加,而是正确构建它:
var keyvalue = $('#keyvalue').val();
var exists = $('#key option').map(function() {
return $(this).val();
}).toArray().indexOf(keyvalue) >= 0;
if (!exists) {
var newOption = $("<option></option>");
newOption.attr("value", keyvalue);
newOption.text(keyvalue);
$('#key').append(newOption);
}
正如您所看到的,检查该值是否已存在也是错误的,通过迭代现有选项并根据用户键入的值检查其值来解决此问题。