Usando o jQuery principal, como você remove todas as opções de uma caixa de seleção e adiciona uma opção e seleciona-a?
Minha caixa de seleção é a seguinte.
<Select id="mySelect" size="9"> </Select>
EDIT: O código a seguir foi útil no encadeamento. No entanto, (no Internet Explorer) .val('whatever')
não selecionou a opção que foi adicionada. (Eu usei o mesmo 'valor' em ambos .append
e .val
.)
$('#mySelect').find('option').remove().end()
.append('<option value="whatever">text</option>').val('whatever');
Edição: tentando fazê-lo para imitar este código, eu uso o seguinte código sempre que a página / formulário é redefinido. Essa caixa de seleção é preenchida por um conjunto de botões de opção. .focus()
estava mais perto, mas a opção não apareceu selecionada como com .selected= "true"
. Nada está errado com meu código existente - estou apenas tentando aprender jQuery.
var mySelect = document.getElementById('mySelect');
mySelect.options.length = 0;
mySelect.options[0] = new Option ("Foo (only choice)", "Foo");
mySelect.options[0].selected="true";
EDIT: resposta selecionada foi perto do que eu precisava. Isso funcionou para mim:
$('#mySelect').children().remove().end()
.append('<option selected value="whatever">text</option>') ;
Mas ambas as respostas me levaram à minha solução final ..
fonte
.append($("<option></option>").attr("value", '123').text('ABC!')
.append($("<option></option>", {'value':'123'}).text('ABC!')
fonte
empty()
acabou mais rápido, claro;) jsperf.com/find-remove-vs-empty.val('whatever')
no final da cadeia, como na resposta de Matt.por que não usar apenas javascript simples?
fonte
Se seu objetivo é remover todas as opções da seleção, exceto a primeira (normalmente a opção 'Por favor, escolha um item'), você poderá usar:
fonte
Eu tive um bug no IE7 (funciona bem no IE6), onde o uso dos métodos jQuery acima limparia a seleção no DOM, mas não na tela. Usando a barra de ferramentas do desenvolvedor do IE, pude confirmar que a seleção foi desmarcada e tinha os novos itens, mas visualmente a seleção ainda mostrava os itens antigos - mesmo que você não pudesse selecioná-los.
A correção foi usar métodos / propriedades DOM padrão (como o original do pôster tinha) para limpar em vez do jQuery - ainda usando o jQuery para adicionar opções.
fonte
Não sabe exatamente o que você quer dizer com "adicione um e selecione-o", pois ele será selecionado por padrão de qualquer maneira. Mas, se você adicionar mais de um, faria mais sentido. Que tal algo como:
Resposta a "EDITAR" : Você pode esclarecer o que quer dizer com "Esta caixa de seleção é preenchida por um conjunto de botões de opção"? Um
<select>
elemento não pode (legalmente) conter<input type="radio">
elementos.fonte
fonte
fonte
Graças às respostas que recebi, consegui criar algo como o seguinte, que se adapte às minhas necessidades. Minha pergunta era um tanto ambígua. Obrigado por acompanhar. Meu problema final foi resolvido incluindo "selected" na opção que eu queria selecionar.
fonte
Que tal apenas mudar o html para novos dados.
Outro exemplo:
fonte
A primeira opção limpar todas as existentes executa a primeira (- Selecionar--)
Anexar novos valores de opção usando o loop um por um
fonte
Eu encontrei na net algo como abaixo. Com milhares de opções como na minha situação é muito mais rápido do que
.empty()
ou.find().remove()
de jQuery.Mais informações aqui .
fonte
Outra maneira:
Sob este link, existem boas práticas https://api.jquery.com/select/
fonte
A primeira linha de código removerá todas as opções de uma caixa de seleção, pois nenhuma opção foi encontrada.
A segunda linha de código adicionará a opção com o valor especificado ("testValue") e o texto ("TestText").
fonte
Com base na resposta de Mauretto, isso é um pouco mais fácil de ler e entender:
Para remover todas as opções, exceto uma com um valor específico, você pode usar este:
Isso seria melhor se a opção a ser adicionada já estivesse lá.
fonte
Usa o jquery prop () para limpar a opção selecionada
fonte
Isso substituirá o mySelect existente por um novo mySelect.
fonte
Você pode fazer isso simplesmente substituindo o html
fonte
fonte
fonte
Eu vi esse código no Select2 - Limpando seleções
Esse código funciona bem com o jQuery, mesmo sem o Select2
fonte
Espero que funcione
fonte
fonte