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.