在jquery字符串

时间:2017-12-13 09:23:24

标签: javascript jquery html

我正在使用jquery创建下拉列表的选项。用户将在文本框keyvaluekeyup()上输入选项文本,它将添加到<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;而创建。小号

任何人都可以帮我解决这个问题。提前谢谢。

1 个答案:

答案 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);
}

正如您所看到的,检查该值是否已存在也是错误的,通过迭代现有选项并根据用户键入的值检查其值来解决此问题。