jQuery select2 получить значение тега select?

95

Привет друзья, это мой код:

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

Это мой код select2:

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

Ниже приведен код для получения выбранного значения.

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

Это ответный текст, который first,second,threeя хочу получить 1,2,3.
Означает, что мне нужно значение поля выбора, а не текст.

Рениш Хунт
источник
Можете ли вы предоставить JSFiddle? Было бы очень полезно.
Ionică Bizău
1
вопрос не ясен. что именно ты хочешь?
Hiral

Ответы:

149
$("#first").val(); // this will give you value of selected element. i.e. 1,2,3.
Somesh
источник
5
$ ("# первый"). val (); // возвращает 1,2,3 OR $ ("# first"). select2 ('val'); // он возвращает первый, второй, третий
Renish Khunt
$ ("# первый"). val (); вернет 1,2,3 (который когда-либо был выбран), и можете ли вы опубликовать код в функции select2 () для получения более подробной информации.
somesh
для выбора, вызываемого по имени идентификатора вместо имени класса, используйте: $ (". first"). val ()
Руи Мартинс
@RuiMartins ошибается. Идентификаторы вызываются с помощью "#", а классы вызываются с помощью ".", Поэтому для вызова по идентификатору вы должны использовать $ ("# first"). Val (), а для CLASS вы должны использовать $ (". First" ) .val ()
Исходники
58

Чтобы получить элемент Select, вы можете использовать $('#first').val();

Чтобы получить текст выбранного значения - $('#first :selected').text();

Не могли бы вы опубликовать свой select2()код функции

Криш Р
источник
1
$ ("# первый"). val (); // возвращает 1,2,3 ИЛИ $ ("# сначала"). select2 ('val'); // он возвращает первый, второй, третий
Renish Khunt
Не уверен, я понял ваш вопрос.
Krish R
1
когда я использовал плагин select2, я получаю значение с помощью $ ("# first"). val (). он ничего не возвращает, он возвращается пустым.
Renish Khunt
Можете ли вы предоставить пример скрипки с вашим плагином?
Krish R
1
Мне пришлось использовать $('#first :selected').text();другой вариант - возвращать все возможные варианты.
Джефф Блюмел
35

$("#first").select2('data') вернет все данные в виде карты

Wawa
источник
1
Очень полезно, если у вас есть дополнительные свойства для объектов select2
Shoe
9

Если вы используете ajax , вы можете захотеть получить обновленное значение select сразу после выбора.

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

Кредиты: Стивен-Джонстон

Джонни Пай
источник
Привет, могу я узнать, откуда он currentTarget? ни один из примеров вашего идентификатора / имени не имеет отношения к Вопросу. Так что я нигде не могу рассказать.
mastersuse
8

Это решение позволяет забыть о выбранном элементе. Полезно, когда у вас нет идентификатора для выбранных элементов.

$("#first").select2()
.on("select2:select", function (e) {
    var selected_element = $(e.currentTarget);
    var select_val = selected_element.val();
});
Стивен Джонстон
источник
4

Простой ответ:

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

и вы также можете написать таким образом:

 $('#first').val()
Раджив Шарма
источник
3

Попробуй это :

$('#input_id :selected').val(); //for getting value from selected option
$('#input_id :selected').text(); //for getting text from selected option
Фахми Иманудин
источник
@RenishKhunt, ответы здесь не только для вас (человека, задающего вопрос), но и для других людей, просматривающих эту страницу. И чем больше здесь представлено разных решений, тем лучше будет выбор у всех остальных, опять же: не только у вас :)
infografnet
Да, мне очень жаль. Спасибо, @infografnet, и большое спасибо, Фахми Иманудин, за публикацию ответа :)
Рениш Хунт
2

Посмотри на эту скрипку .
По сути, вы хотите получить values своих option-tags, но вы всегда пытаетесь получить значение вашего select-node с помощью $("#first").val().

Итак, мы должны выбрать теги опций, и мы будем использовать селекторы jQuerys:

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

$("#first option")выбирает каждый, optionкоторый является дочерним элементом элемента с идентификатором first.

KeyNone
источник
$ ("# первый"). val (); // возвращает 1,2,3 OR $ ("# first"). select2 ('val'); // он возвращает первый, второй, третий
Renish Khunt
Похоже, я неправильно понял ваш вопрос, тогда, пожалуйста, уточните, чего именно вы хотите достичь.
KeyNone
когда я использовал плагин select2, я получаю значение с помощью $ ("# first"). val (). он ничего не возвращает, он возвращается пустым.
Renish Khunt
Посмотри на эту скрипку . У меня отлично работает. (Я добавил select2.js во внешние ресурсы, хотя не могу сказать, почему коробки выглядят некрасиво).
KeyNone
Ключевым моментом было то, что вы сказали, что мы хотим получить значение тегов опций!
Darius.V
2

Вышеупомянутые решения не работали для меня с последней версией select2 (4.0.13)

С помощью jQuery вы можете использовать это решение для получения значения в соответствии с документацией: https://select2.org/programmatic-control/retrieving-selections

$('#first').find(':selected').val();
Михал Врчота
источник
0

Другие ответы у меня не работали, поэтому я разработал решение:

Я создал вариант с class = "option-item" для удобства таргетинга.

HTML:

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

Затем для каждого выбранного параметра я добавил свойство display none

CSS:

option:checked {
   display: none;
}

Теперь мы можем добавить изменения в наш SelectBox, чтобы найти выбранную нами опцию со свойством display none с помощью атрибута simple : hidden.

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

Рабочая скрипка: https://jsfiddle.net/Friiz/2dk4003j/10/

Бартош Был
источник
0

Решение :

var my_veriable = $('#your_select2_id').select2().val();
var my_last_veriable = my_veriable.toString();
Хафзулла ЙИЛДИРИМ
источник