2013-03-14 14 views
13

Używam wybieralnego wielokrotnego wyboru Chcę, aby użytkownik wybrał dowolną opcję, którą chcę uzyskać, a następnie wykona jakąś funkcję w zależności od tej wartości.Uzyskaj każdą wybraną wartość za pomocą wybranej wtyczki jquery

W wybranym bez wielokrotnego wyboru mogę uzyskać wybraną wartość za pomocą przycisku. Kod

$(".selectId").chosen().change(function(){ 
    selectedValue = $(this).find("option:selected").val(); 
}); 

Ale w wielu wybierz dostanę pierwszą wybraną wartość ponownie n ponownie Czy ktoś może mi pomóc znaleźć aktualną wybraną wartość w wielu select elementu ??

Odpowiedz

17

Chosen documentation wymienia parametry dla uzyskania ostatnio zmienione zmienne.

Chosen triggers the standard DOM event whenever a selection is made (it also sends a selected or deselected parameter that tells you which option was changed).

Tak więc, jeśli chcesz po prostu najnowsza opcja wybrana lub odznaczone:

$(".selectId").chosen().change(function(e, params){ 
// params.selected and params.deselected will now contain the values of the 
// or deselected elements. 
}); 

W przeciwnym razie, jeśli chcesz cały wachlarz pracować z was może używać:

$(".selectId").chosen().change(function(e, params){ 
values = $(".selectId").chosen().val(); 
//values is an array containing all the results. 
}); 
1

kod jest poprawny gettin wybraną wartość .. ale ponieważ jej wielokrotność trzeba użyć loop..or używać map uzyskać wybraną wartość i wcisnąć go do tablicy ..

spróbować tej

$(".selectId").chosen().change(function(){ 
    var selectedValue = $.map($(this).find("option:selected").val(), function(n){ 
       return this.value; 
     }); 
    console.log(selectedValue); //this will print array in console. 
    alert(seletedValue.join(',')); //this will alert all values ,comma seperated 
}); 

aktualizowane

jeśli commaseperated uzyskiwanie wartości użyj split()

var values= $(".selectId").val(); 
$.each(values.split(',').function(i,v){ 
    alert(v); //will alert each value 
    //do your stuff 
} 
+0

Dzięki za natychmiastowa pomoc. Ale generuje ten błąd: Uncaught TypeError: Nie można użyć operatora 'in' do wyszukania '1' w 23 –

+0

'Nie można użyć operatora 'in' do wyszukania '1' w 23' dziwnym ... nie brzmi, że błąd się pojawia z dodanego kodu .. czy próbowałeś skomentować to .. i wypróbować to .. zobacz czy dostaniesz błąd ponownie .. – bipen

+0

Chcę zrobić jakąś funkcjonalność dla każdego wyboru. Mogę uzyskać wszystkie wybrane elementy za pomocą $ (". SelectId"). Val(); Ale chcę jeden po drugim wartości i jako użytkownik wybiera element Chcę wyświetlić bieżącą wybraną wartość w jakimś div elementu na każdym zaznaczeniu –

0

spróbować tej

$('.selectId:selected').each(function(i, selected) { 

var value = $(selected).val(); 
var text = $(selected).text(); 

}); 
+0

Hej dzięki. Ale \t Chcę wykonać niektóre funkcje dla każdego zaznaczenia. Mogę uzyskać wszystkie wybrane elementy za pomocą $ (". SelectId"). Val(); Ale chcę jeden po drugim wartości i jako użytkownik wybiera element Chcę wyświetlić, że bieżąca wybrana wartość w jakimś div elementu na każdym zaznaczeniu –

+0

tutaj wartość oznacza, że ​​otrzymasz jedną wartość only.did obserwowałeś, że jest w każdej pętli – PSR

+0

Hej zobacz scenariusz: - Mam trzy przedmioty: item1, item2, item3 ,. Teraz, jeśli wybiorę element 3, to wyświetlę element 3 w jakimś elemencie div. następnie wybiorę pozycję 1. Gdy wybiorę pozycję 1, ta wartość zostanie dołączona do tego elementu div. tj. teraz mój div ma item3 i item1. Chcę tego w tej samej kolejności selekcji. –

10

Krótka odpowiedź:

po prostu to zrobić: var myValues = $('#my-select').chosen().val();

Pełny przykład:

Jeśli masz select-wielokrotność jak to:

<select id="my-select" class="chzn-select" multiple data-placeholder="Choose one or more values..."> 
    <option value="value1">option1</option> 
    <option value="value2">option2</option> 
    <option value="value3">option3</option> 
</select> 

można uzyskać wybrane wartości w tablicy, aby wykonać następujące czynności:

// first initialize the Chosen select 
$('#my-select').chosen(); 

// then, declare how you handle the change event 
$('#my-select').chosen().change(function(){ 
    var myValues = $('#my-select').chosen().val(); 

    // then do stuff with the array 
    ... 
}); 
Powiązane problemy