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.

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') вернет все данные в виде карты


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


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.


$ ("# первый"). val (); // возвращает 1,2,3 OR $ ("# first"). select2 ('val'); // он возвращает первый, второй, третий
Renish Khunt

Похоже, я неправильно понял ваш вопрос, тогда, пожалуйста, уточните, чего именно вы хотите достичь.
KeyNone

когда я использовал плагин select2, я получаю значение с помощью $ ("# first"). val (). он ничего не возвращает, он возвращается пустым.
Renish Khunt

Посмотри на эту скрипку . У меня отлично работает. (Я добавил select2.js во внешние ресурсы, хотя не могу сказать, почему коробки выглядят некрасиво).
KeyNone

Ключевым моментом было то, что вы сказали, что мы хотим получить значение тегов опций!
Darius.V


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/


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.