2013-03-14 16 views
13

Sto usando Scelta multipla scelta Quello che voglio fare è che se l'utente seleziona qualche opzione voglio quel valore e poi farò qualche funzionalità a seconda di quel valore.Ottieni ciascun valore selezionato usando il plugin jquery selezionato

In scelto senza selezione multipla posso ottenere il valore selezionato usando foll. Codice

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

Ma in multipla selezionare ricevo ancora una volta il primo valore selezionato n nuovo Qualcuno può aiutarmi trovando il valore selezionato attuale elemento di selezione multipla ??

risposta

17

Il Chosen documentation menzioni parametri per ottenere le variabili più recentemente cambiato.

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).

Quindi, se si desidera solo l'opzione più recente selezionata o deselezionata:

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

In caso contrario, se si desidera che l'intero array di lavorare con voi può usare:

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

il codice è gettin il valore selezionato corretta .. ma fin dalla sua più è necessario utilizzare loop..or utilizzare map per ottenere il valore selezionato e spingerlo in una matrice ..

provare questo

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

aggiornati

valori se si sono sempre commaseperated quindi utilizzare split()

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

Grazie per aiuto istantaneo. Ma genera questo errore: Uncaught TypeError: impossibile utilizzare l'operatore 'in' per cercare '1' in 23 –

+0

'Non è possibile utilizzare 'in' per cercare '1' in 23' strano ... non sembra che l'errore si stia verificando dal codice aggiunto .. hai provato a commentare questo ... e provarlo ... vedi se hai ancora l'errore .. – bipen

+0

Voglio fare alcune funzionalità per ogni selezione. Posso ottenere tutti gli elementi selezionati usando $ (". SelectId"). Val(); Ma voglio uno per uno valore e come utente seleziona l'elemento voglio visualizzare il valore corrente selezionato in qualche elemento div su ogni selezione –

0

provare questo

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

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

}); 
+0

Ehi, grazie. Ma \t Voglio fare alcune funzionalità per ogni selezione. Posso ottenere tutti gli elementi selezionati usando $ (". SelectId"). Val(); Ma voglio uno per uno valore e come utente seleziona l'elemento voglio visualizzare il valore selezionato corrente in qualche elemento div su ogni selezione –

+0

qui valore significa che si otterrà un solo valore.dam si è osservato che è in ogni ciclo – PSR

+0

Ehi vedere il scenario: - Ho tre articoli: item1, item2, item3 ,. Ora, se seleziono item3, visualizzerò item3 in qualche elemento div. dopo di che seleziono l'articolo 1. Come seleziono l'articolo1, questo valore verrà aggiunto a quel div. ad esempio il mio div ha item3 e item1. Lo voglio nella stessa sequenza di selezione. –

10

Risposta breve:

Devi solo fare questo: var myValues = $('#my-select').chosen().val();

esempio completa:

Se si dispone di una select-multiple simile questo:

<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> 

È possibile ottenere i valori selezionati in una matrice a fare quanto segue:

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