Выбранный плагин Jquery - получение выбранных значений

Как я могу получить выбранные значения из выбранного поля множественного выбора?


person Aakash Shah    schedule 09.05.2012    source источник
comment
@ Эндрю, это разумный вопрос - я тоже задавался вопросом, правильно ли Избранный изменяет базовое поле выбора (оказалось, что инспектор DOM не обновляется должным образом).   -  person mikemaccana    schedule 07.06.2012
comment
@nailer Моя проблема не в разумности, а в усилиях, приложенных к вопросу. Что в данном случае близко к нулю. Пройдитесь по четырем пунктам в моей ссылке и скажите, был ли какой-то из них продемонстрирован здесь.   -  person Andrew    schedule 07.06.2012
comment
@ Андрей Отличный момент.   -  person mikemaccana    schedule 07.06.2012
comment
@arvind, я использовал ваш код и работал у меня тоже для отображения множественного выбора. Я добавил var1=$(this).val() для хранения, но не знаю, как отправить var1 с формой. Работаю над этим.   -  person Heena Shah    schedule 24.07.2013


Ответы (9)


Как и при любом обычном вводе/выборе/и т.д...:

$("form.my-form .chosen-select").val()
person Sergii    schedule 09.05.2012
comment
это неправильный способ.. потому что, если на одной странице есть несколько полей выбора, она вернет поддельное значение :) - person Miqdad Ali; 21.01.2013
comment
Это правильный ответ. Результатом является массив, и мой вопрос заключается в том, как я собираюсь извлечь значения из массива, чтобы я мог поместить их в базу данных. Мне просто нужна подсказка о PHP-коде, необходимом здесь. - person Dimitris Papageorgiou; 25.02.2014

Это сработало для меня

$(".chzn-select").chosen({

     disable_search_threshold: 10

}).change(function(event){

     if(event.target == this){
        alert($(this).val());
     }

});
person Arvind    schedule 25.04.2013

$("#select-id").chosen().val()

это правильный ответ, я пробовал, и переданное значение - это значения, разделенные знаком ","

person user3423551    schedule 15.03.2014
comment
Это не работает для меня - я получаю 2 копии переменной (когда у меня есть 2 варианта, выбранные в chosen), поэтому получается что-то вроде этого: var[] = 111; var[]=3348; - person kneidels; 20.04.2015

Если кто-то хочет получить только выбранное значение при нажатии на опцию, он может сделать следующее:

$('.chosen-select').on('change', function(evt, params) {
    var selectedValue = params.selected;
    console.log(selectedValue);
});
person Panagiotis Koursaris    schedule 11.07.2016
comment
Вы также можете напрямую ссылаться на исходный элемент (ы) select в селекторе, а не использовать выбранный примененный класс .chosen-select. - person BobRodes; 19.07.2016

По состоянию на 2016 год вы можете сделать это проще, чем в любом из уже данных ответов:

$('#myChosenBox').val();

где «myChosenBox» — это идентификатор исходного ввода выбора. Или, в событии изменения:

$('#myChosenBox').on('change', function(e, params) {
    alert(e.target.value); // OR
    alert(this.value); // OR
    alert(params.selected); // also in Panagiotis Kousaris' answer
}

В документе Chosen в разделе внизу страницы, посвященном запуску событий, говорит: «Выбранный запускает ряд стандартных и пользовательских событий в исходном поле выбора». Одним из таких стандартных событий является событие изменения, поэтому вы можете использовать его так же, как и стандартный ввод выбора. Вам не нужно возиться с использованием прикладных классов Chosen в качестве селекторов, если вы этого не хотите. (То есть для события change. Другие события часто имеют другое значение.)

person BobRodes    schedule 17.07.2016

если вы хотите получить текст выбранной опции (выбрано отображение выбранного значения)

 $("#select-id").chosen().find("option:selected" ).text();
person Hoàng Vũ Tgtt    schedule 30.01.2018
comment
Это или $("#select-id").chosen().find("option:selected" ).attr('somArbitraryAttributeNameFromOptionElement') - person uchuugaka; 10.06.2020

Это решение сработало для меня

var ar = [];
$('#id option:selected').each(function(index,valor){
    ar.push(valor.value);
});
console.log(ar);

убедитесь, что ваши теги <option> имеют соответствующий атрибут value. Надеюсь, поможет.

person Osogtulak    schedule 27.06.2018

Я считаю, что проблема возникает при таргетинге по идентификатору, потому что Chosen скопирует идентификатор из исходного select во вновь созданный div, оставив вам 2 элемента с одинаковым (теперь уже не уникальным) идентификатором на текущей странице.

При нацеливании на Выбрано по идентификатору используйте селектор, относящийся к select:

$( 'select#yourID' ).on( 'change', function() {
    console.log( $( this ).val() );
} );

...вместо...

$( '#yourID' ).on( 'change', function() {
    console.log( $( this ).val() );
} );

Это работает, потому что Chosen отображает выбранные элементы обратно в исходный (теперь скрытый) элемент select даже в многорежимном режиме.

(Он также продолжает работать с Chosen или без него, скажем... если вы решите пойти в другом направлении в своем приложении.)

person John James Jacoby    schedule 20.02.2019

person    schedule
comment
Это сработало для меня по сравнению с принятым ответом, который не сработал. - person pbojinov; 25.01.2013
comment
Показывает мне TypeError: $(...).chosen.val is not a function - person Lucky; 23.02.2016
comment
@shankshera да, я понял это с val(). эта ошибка появилась в консоли, выбранная не является допустимой функцией. но другие мои выбранные API работают нормально. - person Lucky; 08.03.2016
comment
@ К счастью, в вашем коде на самом деле не хватает двух наборов (). Один после chosen и один после val. Попробуйте $(...).chosen().val() - person WhiteHotLoveTiger; 24.03.2016
comment
Это работает для меня, но я хотел бы прокомментировать, что selected создает div под select. Это не то, на что вы нацелены с помощью .chosen(). Я по ошибке установил свой селектор запроса как «#select-id_chosen», но правильный селектор был «#select-id». При выборе неправильного тега с помощью jquery, а затем с помощью метода .chosen() он возвращает эту ошибку: Uncaught TypeError: Cannot read property 'length' of undefined. - person Millar248; 16.10.2018