3

にはたくさんのユニークなオプションがあります<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

4 に答える 4

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

再利用可能にする方法は次のとおりです。

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

ライブデモ

大文字小文字を区別しません:

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'));
    }
});​

ライブデモ

于 2012-05-29T11:20:14.297 に答える
2

valueテキストの内容ではなく、検索する必要があると思います。あなたの例では、それらは常に同じですが、常に同じであるとは限りません...

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

if (!combobox.find('option[value="' + toAdd + '"]').length) {
    combobox.append('<option value="' + toAdd + '">' + toAdd + '</option>');
}
于 2012-05-29T11:20:59.210 に答える
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 フィドルのデモ

上記のコードを修正するために編集し (値が見つからない場合ではなく、を$.inArray()返すことを忘れていました)、より適切なセレクターを使用します。-1false

参考文献:

于 2012-05-29T11:22:30.820 に答える
0
if ($('#combobox').find('option[value="Pear"]').length) {
  // there's pear
} else {
  // nope, no pear
}
于 2012-05-29T11:20:25.727 に答える