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.


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.

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


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


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


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

4

A resposta simples é:

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

e você também pode escrever desta forma:

 $('#first').val()

3

Experimente isto:

$('#input_id :selected').val(); //for getting value from selected option
$('#input_id :selected').text(); //for getting text from selected option

@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.


$ ("# 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/


0

Solução:

var my_veriable = $('#your_select2_id').select2().val();
var my_last_veriable = my_veriable.toString();
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.