Chosen: Definir valor selecionado com javascript

Criado em 21 jul. 2011  ·  25Comentários  ·  Fonte: harvesthq/chosen

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);

Comentários muito úteis

Obrigado @stof , isso funcionou.

Apenas para referência, alterando um valor dinamicamente usando jQuery:

$("#single_example").val(2).trigger('chosen:updated');

Todos 25 comentários

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({});

Esta página foi útil?
0 / 5 - 0 avaliações