web-dev-qa-db-fra.com

Obtenez chaque valeur sélectionnée en utilisant le plugin jquery choisi

J'utilise Chosen Multiple Select Ce que je veux faire, c'est que si l'utilisateur sélectionne une option, je veux cette valeur, puis je ferai certaines fonctionnalités en fonction de cette valeur.

Dans choisi sans plusieurs sélectionnez je peux obtenir la valeur sélectionnée en utilisant foll. code

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

Mais dans plusieurs sélections, je reçois à nouveau la première valeur sélectionnée n Quelqu'un peut-il m'aider en trouvant la valeur actuellement sélectionnée dans plusieurs éléments de sélection?

13
sumit souda

La documentation choisie mentionne des paramètres pour obtenir les dernières variables modifiées.

Choisi déclenche l'événement DOM standard chaque fois qu'une sélection est effectuée (il envoie également un paramètre sélectionné ou désélectionné qui vous indique quelle option a été modifiée).

Donc, si vous voulez seulement que l’option la plus récente soit sélectionnée ou désélectionnée:

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

Sinon, si vous voulez que tout le tableau fonctionne, vous pouvez utiliser:

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

Réponse courte:  

Vous faites juste ceci: var myValues = $('#my-select').chosen().val();

Exemple complet:

Si vous avez un select multiple comme ceci:

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

Vous pouvez obtenir les valeurs sélectionnées dans un tableau comme suit:

// 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
    ...
});
13
ghis

votre code reçoit la valeur sélectionnée correcte .. mais depuis son multiple vous devez utiliser boucle..ou utilisez map pour obtenir la valeur sélectionnée et le pousser dans un tableau ..

essaye ça

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

mis à jour

si vous obtenez des valeurs avec des virgules, utilisez split()

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

La documentation choisie mentionne des paramètres pour obtenir les dernières variables modifiées.

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

0
Jagannath

essaye ça

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

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

});
0
PSR