如何使用jquery唯一添加选项以进行选择

时间:2012-05-29 11:17:43

标签: jquery html-select

我在<select>中有很多独特的选项。我需要添加一个新选项,只要它是唯一的并且不存在于现有选项中。

如何使用jquery查找给定option中是否已存在给定的select

例如:

<select id="combobox">
    <option value="">Select one...</option>
    <option value="Apple">Apple</option>
    <option value="Banana">Banana</option>
    <option value="Pears">Pears</option>
</select>
  • 新的有效选项:Pear
  • 新的无效选项:Apple

4 个答案:

答案 0 :(得分:6)

if (!$("#combobox option[value='Apple']").length)
    // Add it

使其可重复使用可以是:

if (!$("#combobox option[value='" + value + "']").length)
    // Add it

Live DEMO

不区分大小写:

var isExist = !$('#combobox option').filter(function() {
    return $(this).attr('value').toLowerCase() === value.toLowerCase();
}).length;​

完整代码:(演示版)

$('#txt').change(function() {
    var value = this.value;

    var isExist = !!$('#combobox option').filter(function() {
        return $(this).attr('value').toLowerCase() === value.toLowerCase();
    }).length;

    if (!isExist) {
        console.log(this.value + ' is a new value!');
        $('<option>').val(this.value).text(this.value).appendTo($('#combobox'));
    }
});​

Live DEMO

答案 1 :(得分:2)

我认为您想要按value而不是文字内容进行搜索。在你的例子中,它们总是相同的,但可能它们并不总是......

var toAdd = 'Apricot',
    combobox = $('#combobox');

if (!combobox.find('option[value="' + toAdd + '"]').length) {
    combobox.append('<option value="' + toAdd + '">' + toAdd + '</option>');
}

答案 2 :(得分:1)

假设新的选项文本出现在newOption变量中:

$('button').click(
    function() {
        var newOption = $('#newOptionInput').val(),
            opts = [];
        $('#combobox option').each(
            function() {
                opts.push($(this).text());
            });

        if ($.inArray(newOption, opts) == -1) {
            $('<option />')
                .val(newOption)
                .text(newOption)
                .appendTo('#combobox');
        }
    });​

JS Fiddle demo

已修改以更正上述代码(我忘记了$.inArray()返回-1,而未找到值时false),并使用了更合适的选择器。

参考文献:

答案 3 :(得分:0)

if ($('#combobox').find('option[value="Pear"]').length) {
  // there's pear
} else {
  // nope, no pear
}