how can i uniquely add options to select using jquery
我在一个
如何使用jquery查找给定的
例如:
1 2 3 4 5 6 | <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
1 2 | if (!$("#combobox option[value='Apple']").length) // Add it |
使其可重复使用可以是:
1 2 | if (!$("#combobox option[value='" + value +"']").length) // Add it |
现场演示
不区分大小写:
1 2 3 | var isExist = !$('#combobox option').filter(function() { return $(this).attr('value').toLowerCase() === value.toLowerCase(); }).length;? |
完整代码:(演示版的)
1 2 3 4 5 6 7 8 9 10 11 12 | $('#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')); } });? |
现场演示
我想你应该用
1 2 3 4 5 6 | var toAdd = 'Apricot', combobox = $('#combobox'); if (!combobox.find('option[value="' + toAdd + '"]').length) { combobox.append('<option value="' + toAdd + '">' + toAdd + '</option>'); } |
假设新选项文本出现在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $('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小提琴演示。
编辑以更正上述代码(我忘记了
参考文献:
appendTo() 。each() 。$.inArray() /jQuery.inArray() 。push() 。text() 。val() 。
1 2 3 4 5 | if ($('#combobox').find('option[value="Pear"]').length) { // there's pear } else { // nope, no pear } |