Comment puis-je obtenir les valeurs sélectionnées à partir de la zone de sélection multiple?
Comme à partir de n'importe quelle entrée régulière/sélectionnez/etc ...:
$("form.my-form .chosen-select").val()
$("#select-id").chosen().val()
Cela a fonctionné pour moi
$(".chzn-select").chosen({
disable_search_threshold: 10
}).change(function(event){
if(event.target == this){
alert($(this).val());
}
});
$("#select-id").chosen().val()
c’est la bonne réponse, j’ai essayé, et la valeur transmise correspond aux valeurs séparées par ","
Si quelqu'un veut obtenir uniquement la valeur sélectionnée en cliquant sur une option, il peut procéder comme suit:
$('.chosen-select').on('change', function(evt, params) {
var selectedValue = params.selected;
console.log(selectedValue);
});
À partir de 2016, vous pouvez le faire plus simplement que dans l'une des réponses déjà données:
$('#myChosenBox').val();
où "myChosenBox" est l'id de l'entrée de sélection d'origine. Ou, dans l'événement de changement:
$('#myChosenBox').on('change', function(e, params) {
alert(e.target.value); // OR
alert(this.value); // OR
alert(params.selected); // also in Panagiotis Kousaris' answer
}
Dans le document Choisi , dans la section vers le bas de la page sur le déclenchement d'événements, il est écrit "Choisi déclenche un certain nombre d'événements standard et personnalisés sur le champ de sélection d'origine". L'un de ces événements standard est l'événement change. Vous pouvez donc l'utiliser de la même manière qu'avec une entrée de sélection standard. Vous n'avez pas à vous soucier d'utiliser les classes appliquées de Chosen comme sélecteurs si vous ne le souhaitez pas. (Pour l'événement change
, c'est-à-dire. Les autres événements sont souvent une affaire différente.)
si vous voulez obtenir le texte d'une option sélectionnée (choisi pour afficher la valeur sélectionnée)
$("#select-id").chosen().find("option:selected" ).text();
Je pense que le problème se produit lors du ciblage par ID, car Chosen copiera l’ID de la select
originale sur la div
nouvellement créée, vous laissant ainsi 2 éléments du même ID (maintenant non unique) sur la page actuelle.
Lorsque vous ciblez Sélectionné par ID, utilisez un sélecteur spécifique à la variable select
:
$( 'select#yourID' ).on( 'change', function() {
console.log( $( this ).val() );
} );
...au lieu de...
$( '#yourID' ).on( 'change', function() {
console.log( $( this ).val() );
} );
Cela fonctionne car l'élément choisi renvoie les éléments sélectionnés à l'élément select
d'origine (maintenant masqué), même en mode multiple.
(Il continue également de fonctionner avec ou sans choisi, disons ... si vous décidez de changer d'orientation dans votre application.)
Cette solution a fonctionné pour moi
var ar = [];
$('#id option:selected').each(function(index,valor){
ar.Push(valor.value);
});
console.log(ar);
assurez-vous d'avoir vos balises <option>
avec leur attribut correspondant value
. J'espère que cela vous aidera.