Para a versão select2> = 4.0.0
As outras soluções podem não funcionar, no entanto, os exemplos a seguir devem funcionar.
Solução 1: faz com que todos os eventos de alteração anexados sejam acionados, incluindo select2
$('select').val('1').trigger('change');
Solução 2: faz com que apenas o evento de alteração select2 seja acionado
$('select').val('1').trigger('change.select2');
Veja este jsfiddle para exemplos disso. Obrigado a @minlare pela solução 2.
Explicação:
Digamos que eu tenha um melhor amigo e escolha o nome das pessoas. Então, Bob, Bill e John (neste exemplo, presumo que o valor seja o mesmo que o nome). Primeiro eu inicializo select2 no meu select:
$('#my-best-friend').select2();
Agora eu seleciono Bob manualmente no navegador. Em seguida, Bob faz algo impertinente e eu não gosto mais dele. Portanto, o sistema desmarca Bob para mim:
$('#my-best-friend').val('').trigger('change');
Ou digamos que eu faça o sistema selecionar o próximo na lista em vez de Bob:
// I have assume you can write code to select the next guy in the list
$('#my-best-friend').val('Bill').trigger('change');
Notas no site Select 2 (consulte Métodos obsoletos e removidos ) que podem ser úteis para outras pessoas:
.select2 ('val')
O método "val" foi descontinuado e será removido no Select2 4.1. O método descontinuado não inclui mais o parâmetro triggerChange.
Você deve chamar diretamente .val no elemento subjacente. Se você precisou do segundo parâmetro (triggerChange), também deve chamar .trigger ("change") no elemento
$('select').val('1').trigger('change'); // instead of $('select').select2('val', '1');
change
evento (como recarregar o formulário). Caso contrário, essas ações seriam chamadas de forma redundante ao serem acionadaschange()
.onChange
)Olhando para os documentos select2, use os itens abaixo para obter / definir o valor.
O @PanPipes apontou que isso mudou para 4.x (faça um voto positivo abaixo).
val
agora é chamado diretamente$("#select").val("CA");
Portanto, dentro
loadComplete
do jqGrid, você pode obter o valor que procura e definir o valor da caixa de seleção.Aviso dos documentos
fonte
val
chamada.<select>
convertido emselect2
controle testando a existência da classeselect2-offscreen
no<select>
. Todos os elementos da barra de ferramentas de pesquisa têm um ID que começa com ogs_
prefixo e tem o nome como emcolModel
. Você pode usargetGridParam
para obtercolModel
.select2
select. Vou dar outra olhada hoje, talvez com novos olhos eu conserte. Obrigado novamente. Atualização: agrupar o código em uma verificação booleana corrigiu o problema que eu estava tendo, embora parasse de atualizar a barra de pesquisa em vez de selecionar o elemento anterior novamente.isso deve ser útil.
fonte
Isso deve ser ainda mais fácil.
Mas verifique se os valores que você passa já estão presentes no arquivo HTMl
fonte
Se você deseja adicionar new
value='newValue'
etext='newLabel'
, adicione este código:Adicione nova opção a
<select>
:Acionar a
<select>
alteração para o valor selecionado:fonte
Só queria adicionar uma segunda resposta. Se você já tiver processado o select como um select2 , será necessário que isso seja refletido no seu seletor da seguinte maneira:
fonte
Você tem duas opções - como a resposta do @PanPipes indica que você pode fazer o seguinte.
Essa é uma solução aceitável apenas se não houver ações personalizadas vinculadas ao evento de mudança. A solução que uso nessa situação é acionar um evento específico select2 que atualiza a seleção exibida select2.
fonte
Tendo alguns problemas ao definir uma opção String selecionada em um select2:
Com a opção: "opção string1 / opção" usada:
MAS com uma opção com um valor: valor da opção "E" string1 / opção:
Espera que isso ajude alguém com o mesmo problema.
fonte
Se você deseja selecionar um único valor, use
$('#select').val(1).change()
se você quiser selecionar vários valores, defina o valor na matriz para poder usar esse código
$('#select').val([1,2,3]).change()
fonte
Para V4 Select2, se você deseja alterar o valor do select2 e a representação em texto da lista suspensa.
Isso definirá não apenas o valor dos bastidores, mas também a exibição de texto para o select2.
Extraído de https://select2.github.io/announcements-4.0.html#removed-methods
fonte
Meu código esperado:
funcionando perfeitamente obrigado a @PanPipes pelo útil.
fonte
faça isso
fonte
Se você tiver uma fonte de dados ajax, consulte-a gratuitamente.
https://select2.org/programmatic-control/add-select-clear-items
// Configure o controle Select2
// Busque o item pré-selecionado e adicione ao controle
fonte
se você deseja definir um item selecionado quando conhece o texto na lista suspensa e não sabe o valor, veja um exemplo:
Digamos que você descobriu um fuso horário e deseja defini-lo, mas os valores estão
time_zone_id
neles.fonte
Fonte: Selecione 2 documentação
fonte
você pode simplesmente usar o método get / set para definir o valor
ou você pode fazer isso:
fonte