Pertencem a códigos anteriores a select2 versão 4
Eu tenho um código simples para select2
obter dados do Ajax
$("#programid").select2({
placeholder: "Select a Program",
allowClear: true,
minimumInputLength: 3,
ajax: {
url: "ajax.php",
dataType: 'json',
quietMillis: 200,
data: function (term, page) {
return {
term: term, //search term
flag: 'selectprogram',
page: page // page number
};
},
results: function (data) {
return {results: data};
}
},
dropdownCssClass: "bigdrop",
escapeMarkup: function (m) { return m; }
});
Este código está funcionando, no entanto, preciso definir um valor nele como se estivesse no modo de edição. Quando o usuário selecionar um valor pela primeira vez, ele será salvo e quando ele precisar editar esse valor deve aparecer no mesmo menu de seleção ( select2
) para selecionar o valor selecionado anteriormente, mas não consigo encontrar uma maneira.
ATUALIZAR:
O código HTML:
<input type="hidden" name="programid" id="programid" class="width-500 validate[required]">
O acesso programático Select2 não funciona com isso.
javascript
php
jquery
ajax
jquery-select2
Limpar ambos
fonte
fonte
$("#programid").val()
Respostas:
Para definir dinamicamente o valor "selecionado" de um componente Select2:
Onde o segundo parâmetro é um objeto com valores esperados.
ATUALIZAR:
Isso funciona, só queria observar que no novo select2, "a_key" é "texto" em um objeto select2 padrão. tão:
{id: 100, text: 'Lorem Ipsum'}
Exemplo:
Obrigado a @NoobishPro
fonte
$('#inputID').val(100).trigger('change')
Ver select2.github.io/…Etapa 1: HTML
Etapa 2: Crie uma instância de Select2
Etapa # 3: Defina o valor desejado
Se você usar select2 sem AJAX, você pode fazer o seguinte:
Você também pode fazer isso:
Para select2 v4, você pode anexar diretamente uma ou mais opções da seguinte forma:
Ou com JQuery:
outro exemplo
fonte
Html:
JavaScript:
jsfiddle
fonte
Além disso, como tentei, ao usar ajax em select2, os métodos de controle programático para definir novos valores em select2 não funcionam para mim! Agora escrevo estes códigos para resolver o problema:
Você pode testar o código de amostra completo neste link: https://jsfiddle.net/NabiKAZ/2g1qq26v/32/
Neste código de amostra há um select2 ajax e você pode definir um novo valor com um botão.
Exibir trecho de código
fonte
Experimente este anexo e selecione. Não duplica a opção na chamada AJAX.
fonte
Eu gostei disso-
fonte
Na versão atual em
select2
-v4.0.1
você pode definir o valor assim:fonte
destroy
chamar o plugin novamente .. Veja o código atualizado ..so that I wouldn't have to duplicate them
Por que tenho que duplicá-los? Quando você faz,destroy
oselect
ainda está lá com todos os seusoptions
.$example.select2({ ... this ... })
Para Ajax, use
$(".select2").val("").trigger("change")
. Isso deve resolver o problema.fonte
Eu acho que você precisa da
initSelection
funçãofonte
HTML
JS
fonte: https://select2.github.io/options.html
fonte
Em Select2 V.4
usar
$('selector').select2().val(value_to_select).trigger('change');
Eu acho que isso deve resultar
fonte
Defina o valor e acione o evento de alteração imediatamente.
fonte
Resolvi meu problema com este código simples. Onde #select_location_id é um ID da caixa de seleção e value é o valor de uma opção listada na caixa select2.
fonte
A resposta de Phan funcionou para mim:
Mas adicionar a mudança aciona o evento
fonte
você pode usar este código:
onde 2 em "número: 2" e 3 em "número: 3" são campos de id na matriz de objeto
fonte
Às vezes,
select2()
estará carregando primeiro, e isso faz com que o controle não mostre corretamente o valor selecionado anteriormente. Atrasar alguns segundos pode resolver esse problema.fonte
Seria mais apropriado aplicar
select2
após escolher um dos seletos atuais.fonte
Fiz algo assim para predefinir elementos no menu suspenso select2 ajax
fonte
Você deveria usar:
fonte
Se você estiver usando uma caixa de entrada, deve definir a propriedade "multiple" com seu valor como "true". Por exemplo,
fonte
Nele
select2 < version4
existe a opçãoinitSelection()
de carregamento remoto de dados, através da qual é possível definir o valor inicial para a entrada como no modo de edição.Documentação fonte: Select2 - 3.5.3
fonte
Só para acrescentar a qualquer outra pessoa que possa ter tido o mesmo problema comigo.
Eu estava tentando definir a opção selecionada de minhas opções carregadas dinamicamente (de AJAX) e estava tentando definir uma das opções como selecionado dependendo de alguma lógica.
Meu problema surgiu porque eu não estava tentando definir a opção selecionada com base no ID que precisa corresponder ao valor, não o valor correspondente ao nome!
fonte
Para vários valores, algo como este:
que se traduzirá em algo assim
fonte
Isso pode ajudar alguém a carregar dados select2 de AJAX ao carregar dados para edição ( aplicável para seleção única ou múltipla ):
Durante o carregamento do meu formulário / modelo:
Ligue para selecionar dados para Select2:
e se você estiver tendo problemas com a codificação, você pode alterar conforme sua necessidade:
fonte
se você está obtendo seus valores do ajax, antes de chamar
confirme se a chamada ajax foi concluída, usando a função jquery quando
fonte
Para desenvolver a resposta de @ tomloprod. Pela estranha chance de você estar usando x-editable e ter um campo select2 (v4) e vários itens que você precisa pré-selecionar. Você pode usar o seguinte código:
e aqui está ele em ação:
Eu acho que isso funcionaria mesmo se você não estiver usando x-editable. Espero que ele possa ajudar alguém.
fonte
Você pode usar este código:
Coloque o valor desejado em vez de Your_value
Espero que funcione :)
fonte
Legal e fácil:
E você muda
id_city
para o id do seu select.Edit: Após o comentário de Glen, percebo que devo explicar por que e como funcionou para mim:
Eu tinha tornado o
select2
trabalho muito bom para a minha forma. A única coisa que não consegui fazer funcionar foi mostrar o valor selecionado atualmente durante a edição. Ele estava pesquisando uma API de terceiros, salvando novos e editando registros antigos. Depois de um tempo percebi que não precisava definir o valor corretamente, apenas o rótulo dentro do campo, pois se o usuário não alterar o campo nada acontece. Depois de pesquisar e observar muitas pessoas que estão tendo problemas com ele, decidi fazer com Javascript puro. Funcionou e postei para talvez ajudar alguém. Também sugiro definir um cronômetro para ele.fonte