Definir o valor selecionado com javascript não funciona. Eu sei que choose() adiciona a classe single_examplechzn_o_0 a <li>
que não tem nada em comum com o valor da opção e que #single_example não existe mais depois de choose(). Existe uma maneira que isso pode funcionar?
Isso funciona:
```
$("#single_example").val(2);
``````
Isso não funciona:
```
``````
$("#single_example").val(2);
Experimente meu branch (https://github.com/tompaton/chosen) ele pode corrigir isso para você.
Infelizmente não funciona para mim.
Você precisa acionar manualmente o evento de alteração (não há como contornar isso, até onde eu sei, o que é irritante ...):
$("#single_example").val(2).trigger("change");
Obrigado, isso funciona perfeitamente!
Eu fiz o exemplo que você mostra com erro, mas quando eu faço $("#single_example").val(2).trigger("change");
, não tenho nenhuma alteração na lista (valor selecionado).
Estou usando a última versão do plugin.
Saudações
Você precisará usar https://github.com/tompaton/chosen , ele não foi mesclado no branch harvesthq.
Sim, funciona como charme depois de usar o ramo tompaton.
$("#single_example1").val(2);
$("#single_example2").val(3)
...
$("#single_example3").val(20);
$('.escolhido').trigger('alterar');
Olá pessoal, baixei o fork do tompaton (https://github.com/tompaton/chosen) fiz:
$("#single_example").val(2).trigger("change");
A isso funciona como um encanto
Obrigado pelo conselho :-)
Estou tentando escrever uma função clear all e isso não parece funcionar, mesmo usando o branch tompaton:
$(".state_list").val("").trigger("change");
Eu tenho uma opção vazia:
```
Is there a way to totally remove all selections? Also how about selecting all?
Desculpe, meu patch não abordou caixas de seleção múltipla, isso exigirá
um pouco mais de código...
Na sexta-feira, 12 de agosto de 2011 às 1h50, MB34
[email protected]
escrevi:
Estou tentando escrever uma função clear all e isso não parece funcionar, mesmo usando o branch tompaton:
$(".state_list").val("").trigger("change");Eu tenho uma opção vazia:
Existe uma maneira de remover totalmente todas as seleções? E que tal selecionar todos?
Responda a este e-mail diretamente ou visualize-o no GitHub:
https://github.com/harvesthq/chosen/issues/31#issuecomment -1782941
Então, existe uma maneira de fazer isso sem corrigir o plugin?
Ok, é possível limpar todas as opções de uma seleção múltipla sem patch, se você estiver disposto a se prender ao funcionamento interno do escolhido:
// replace {select_id} below with the id of your <select> tag
$('#{select_id}_chzn .chzn-choices .search-choice a').click();
Isso simulará clicar em remover "x" em cada item escolhido na seleção múltipla.
A seleção de todas as opções também é possível (simulando clicando em todas as opções disponíveis no menu suspenso):
$('#{select_id}_chzn .chzn-drop li').click();
Estes devem ser adicionados como métodos ao plugin escolhido.
Ok, para esclarecer tudo isso:
@pfiller apontou que tudo isso é possível no branch harvesthq/chosen usando:
$("#single_example").val(2).trigger("liszt:updated");
Meu mal por não ler o código/documentação completamente o suficiente. Isso funcionará corretamente para várias caixas de seleção também.
Limpar todas as opções de uma seleção múltipla pode ser feito com:
$('#{select_id}').val([]).trigger('liszt:updated');
Acho que meu comentário anterior ainda é a única maneira de selecionar todas as opções.
_Observe_ que meu fork agora é o mesmo que harvesthq/chosen com relação a isso, então apenas use-o e ignore o material .trigger('change')
.
Para aqueles que podem estar usando o adaptador Prototype, você pode fazer a mesma coisa da seguinte maneira:
$(select_box_id).select('option[selected]').each(function(el){el.selected = false});
Event.fire($(select_box_id), 'liszt:updated')
Meio chato mas funciona. Se houver uma maneira melhor de fazer isso, saiba
A solução que uso é alterar a opção selecionada na seleção de origem original e, em seguida, reconstruir Chosen.
select.val(value);
select.chosen('destroy');
select.chosen({});
@roelvanduijnhoven a solução dada no comentário de @tompaton (ou dada por @RyanS para a versão Prototype) é melhor, pois atualiza o elemento escolhido existente em vez de destruí-lo e construir um novo
Por algum motivo, a solução do @tompaton não pareceu funcionar no meu caso. Não coloquei muito esforço nisso, então talvez eu tenha feito algo errado.
@roelvanduijnhoven Se você estiver usando a versão 1.0, o evento agora é chosen:updated
Obrigado @stof , isso funcionou.
Apenas para referência, alterando um valor dinamicamente usando jQuery:
$("#single_example").val(2).trigger('chosen:updated');
E para referência, isso está documentado: http://harvesthq.github.io/chosen/#change -update-events
Desculpe @roelvanduijnhoven , meu comentário era para outro problema, agora o deletei. (o gmail tinha agrupado os emails, e eu postei comentário respondendo)
Muito obrigado! Esse tópico salvou meu dia!
Finalmente, tenho multi-seleção com valores padrão :)
Oi, sou novo jquery e acabei de baixar escolhido. Estou confuso sobre como definir / obter vários valores escolhidos.
o que estou tentando fazer é criar uma opção dinamicamente no carregamento da página, então preciso selecionar os padrões
obrigado
Guri
gpdillion:
usa isto
$('.chosen-select').val([1,2,3]).trigger('chosen:updated');
$ ("#id").val(id_value);
$("#id").chosen('destruir');
$("#id").chosen({});
Comentários muito úteis
Obrigado @stof , isso funcionou.
Apenas para referência, alterando um valor dinamicamente usando jQuery: