jQuery select2 obtém o valor da tag select?

95

Olá amigos, este é o meu código:

<select id='first'>
  <option value='1'> First  </option>
  <option value='2'> Second </option>
  <option value='3'> Three  </option>
</select>

Este é o meu código select2:

$("#first").select2();

Abaixo está o código para obter o valor selecionado.

$("#first").select2('val'); // It returns first,second,three.

Este é o retorno de um texto como first,second,threee desejo obter 1,2,3.
Significa que preciso do valor da caixa de seleção, não do texto.

Renish Khunt
fonte
Você pode fornecer um JSFiddle? Seria muito útil.
Ionică Bizău
1
questão não está clara. exatamente o que você quer?
Hiral

Respostas:

148
$("#first").val(); // this will give you value of selected element. i.e. 1,2,3.
somesh
fonte
5
$ ("# primeiro"). val (); // retorna 1,2,3 OR $ ("# primeiro"). select2 ('val'); // retorna primeiro, segundo, três
Renish Khunt
$ ("# primeiro"). val (); retornará 1,2,3 (o que for selecionado) e você pode postar o código na função select2 () para mais detalhes.
algum dia
para um select chamado pelo nome do id em vez do nome da classe, use: $ (". first"). val ()
Rui Martins
@RuiMartins errado. IDs são chamados com "#" e classes são chamadas com ".", Então para chamar por ID, você usaria $ ("# first"). Val () e para CLASS usaria $ (". First" ) .val ()
Questões de fonte
58

Para obter o elemento Select, você pode usar $('#first').val();

Para obter o texto do valor selecionado - $('#first :selected').text();

Você pode postar seu select2()código de função

Krish R
fonte
1
$ ("# primeiro"). val (); // retorna 1,2,3 OR $ ("# primeiro"). select2 ('val'); // retorna primeiro, segundo, três
Renish Khunt
Não tenho certeza, entendi sua pergunta.
Krish R
1
quando eu usei o plugin select2, eu obtenho o valor usando $ ("# first"). val (). não retorna nada retorna em branco.
Renish Khunt
Você pode fornecer um exemplo de violino com seu plugin?
Krish R
1
Eu tive que usar $('#first :selected').text();a outra opção era retornar todas as opções possíveis.
Jeff Bluemel de
35

$("#first").select2('data') retornará todos os dados como mapa

wawa
fonte
1
Muito útil se você tiver propriedades extras nos objetos select2
Sapato
9

Se você estiver usando ajax , pode desejar obter o valor atualizado de select logo após a seleção.

//Part 1

$(".element").select2(/*Your code*/)    

//Part 2 - continued 

$(".element").on("select2:select", function (e) { 
  var select_val = $(e.currentTarget).val();
  console.log(select_val)
});

Créditos: Steven-Johnston

Johny Pie
fonte
Olá, posso saber de onde currentTargetvem? nenhum dos seus exemplos de ID / nome está relacionado à pergunta. Portanto, não posso me relacionar com nada
mastersuse
8

Esta solução permite que você esqueça o elemento selecionado. Útil quando você não tem uma identificação em elementos selecionados.

$("#first").select2()
.on("select2:select", function (e) {
    var selected_element = $(e.currentTarget);
    var select_val = selected_element.val();
});
Steven Johnston
fonte
4

A resposta simples é:

$('#first').select2().val()

e você também pode escrever desta forma:

 $('#first').val()
Rajiv Sharma
fonte
3

Experimente isto:

$('#input_id :selected').val(); //for getting value from selected option
$('#input_id :selected').text(); //for getting text from selected option
Fahmi Imanudin
fonte
@RenishKhunt as respostas aqui não são apenas para você (a pessoa que fez a pergunta), mas também para outras pessoas que estão vendo esta página. E quanto mais soluções diferentes forem enviadas aqui, melhor será a escolha de todos, de novo: não apenas você :)
infografnet
Sim, sinto muito. Obrigado, @infografnet e muito obrigado Fahmi Imanudin por postar uma resposta :)
Renish Khunt
2

Veja este violino .
Basicamente, você deseja obter os values de suas option-tags, mas sempre tenta obter o valor de seu select-node com $("#first").val().

Portanto, temos que selecionar as tags de opção e utilizaremos os seletores jQuerys:

$("#first option").each(function() {
    console.log($(this).val());
});

$("#first option")seleciona todos os optionque são filhos do elemento com o id first.

KeyNone
fonte
$ ("# primeiro"). val (); // retorna 1,2,3 OR $ ("# primeiro"). select2 ('val'); // retorna primeiro, segundo, três
Renish Khunt
Parece que entendi errado sua pergunta, então, por favor, esclareça exatamente o que você deseja alcançar.
KeyNone
quando eu usei o plugin select2, eu obtenho o valor usando $ ("# first"). val (). não retorna nada retorna em branco.
Renish Khunt
Veja este violino . Funciona perfeitamente bem para mim. (Eu adicionei select2.js nos recursos externos, embora não consiga dizer por que as caixas parecem feias).
KeyNone
a chave é que você disse que queremos obter o valor das tags de opção!
Darius.V
0

Outras respostas não estavam funcionando para mim, então desenvolvi a solução:

Eu criei a opção com class = "option-item" para facilitar o direcionamento

HTML:

<select id="select-test">
<option value="5-val" id="first-id" class="option-item"> First option </option>
</select>

Então, para cada opção selecionada eu adicionei nenhuma propriedade de exibição

CSS:

option:checked {
   display: none;
}

Agora podemos adicionar alterações ao nosso SelectBox para encontrar nossa opção selecionada com a propriedade display none por simples : atributo oculto

JQuery:

$('#select-test').change(function(){
//value 
    $('#select-test').find('.option-item:hidden').val();
//id
    $('#select-test').find('.option-item:hidden').attr('id');
//text
    $('#select-test').find('.option-item:hidden').text();
});

Trabalhando violino: https://jsfiddle.net/Friiz/2dk4003j/10/

Bartosz Was
fonte
0

Solução:

var my_veriable = $('#your_select2_id').select2().val();
var my_last_veriable = my_veriable.toString();
Hafzullah YILDIRIM
fonte