Chosen: Définir la valeur sélectionnée avec javascript

Créé le 21 juil. 2011  ·  25Commentaires  ·  Source: harvesthq/chosen

La définition de la valeur sélectionnée avec javascript ne fonctionne pas. Je sais que choisi() ajoute la classe single_examplechzn_o_0 à <li> qui n'a rien de commun avec la valeur de l'option et que #single_example n'existe plus après choisi(). Y a-t-il un moyen pour que cela fonctionne ?

Cela marche:
```


$("#single_example").val(2);

``````

Cela ne fonctionne pas :
```
``````

$("#single_example").val(2);

Commentaire le plus utile

Merci @stof , ça a fait l'affaire.

Juste pour référence, changer une valeur dynamiquement en utilisant jQuery :

$("#single_example").val(2).trigger('chosen:updated');

Tous les 25 commentaires

Essayez ma branche (https://github.com/tompaton/chosen) cela peut résoudre ce problème pour vous.

Malheureusement, cela ne fonctionne pas pour moi.

Vous devez déclencher manuellement l'événement de changement (pas moyen de contourner cela pour autant que je sache, ce qui est ennuyeux...) :

$("#single_example").val(2).trigger("change");

Merci, cela fonctionne parfaitement !

J'ai fait l'exemple qui vous montre avec erreur, mais quand je fais $("#single_example").val(2).trigger("change");
, je n'ai aucun changement dans la liste (valeur sélectionnée).
J'utilise la dernière version du plugin.
salue

Vous devrez utiliser https://github.com/tompaton/chosen , il n'a pas été fusionné dans la branche harvesthq.

Oui, cela fonctionne comme un charme après avoir utilisé la branche Tompaton.

$("#single_example1").val(2);
$("#single_example2").val(3)
...
$("#single_example3").val(20);
$('.chosen').trigger('change');

Salut les gars, j'ai téléchargé le fork du tompaton (https://github.com/tompaton/chosen) j'ai fait :
$("#single_example").val(2).trigger("change");
A cela fonctionne comme un charme
Merci pour les conseils :-)

J'essaie d'écrire une fonction clear all et cela ne semble pas fonctionner, même en utilisant la branche tompaton :
$(".state_list").val("").trigger("change");

J'ai une option vide :
```

Is there a way to totally remove all selections? Also how about selecting all?

Désolé, mon correctif n'a pas traité les cases à sélection multiple, cela nécessitera
un peu plus de code...

Le ven. 12 août 2011 à 1 h 50, MB34
[email protected]
a écrit:

J'essaie d'écrire une fonction clear all et cela ne semble pas fonctionner, même en utilisant la branche tompaton :
$(".state_list").val("").trigger("change");

J'ai une option vide :

Existe-t-il un moyen de supprimer totalement toutes les sélections ? Aussi, que diriez-vous de tout sélectionner ?

Répondez directement à cet e-mail ou consultez-le sur GitHub :
https://github.com/harvesthq/chosen/issues/31#issuecomment -1782941

Existe-t-il un moyen de le faire sans patcher le plugin ?

Ok, donc effacer tous les choix d'une multi-sélection est possible sans patcher, si vous êtes prêt à vous enfermer dans le fonctionnement interne de choisi :

// replace {select_id} below with the id of your <select> tag
$('#{select_id}_chzn .chzn-choices .search-choice a').click();

Cela simulera un clic sur le "x" de suppression de chaque élément choisi dans la sélection multiple.

Il est également possible de sélectionner toutes les options (en simulant un clic sur toutes les options disponibles dans la liste déroulante) :

$('#{select_id}_chzn .chzn-drop li').click();

Ceux-ci doivent vraiment être ajoutés en tant que méthodes au plugin choisi.

Bon, pour clarifier tout ça :

@pfiller a souligné que tout cela est possible dans la branche harvesthq/chosen en utilisant :

$("#single_example").val(2).trigger("liszt:updated");

Mon mauvais pour ne pas avoir lu le code/la documentation assez complètement. Cela fonctionnera également correctement pour plusieurs zones de sélection.

Effacer toutes les options d'une sélection multiple peut être fait avec :

$('#{select_id}').val([]).trigger('liszt:updated');

Je pense que mon commentaire précédent est toujours le seul moyen de sélectionner toutes les options.

_Note_ que mon fork est maintenant le même que harvesthq/chosen par rapport à cela, alors utilisez-le simplement et ignorez les trucs .trigger('change') .

Pour ceux d'entre vous qui pourraient utiliser l'adaptateur Prototype, vous pouvez faire la même chose comme suit :

  $(select_box_id).select('option[selected]').each(function(el){el.selected = false});
  Event.fire($(select_box_id), 'liszt:updated')

Un peu maladroit mais ça marche. S'il y a une meilleure façon de faire ça, lemmie sait

La solution que j'utilise consiste à modifier l'option sélectionnée sur la source d'origine, puis à reconstruire Chosen.

select.val(value);
select.chosen('destroy');
select.chosen({});

@roelvanduijnhoven la solution donnée dans le commentaire de @tompaton (ou donnée par @RyanS pour la version Prototype) est meilleure car elle met à jour l'élément choisi existant au lieu de le détruire et d'en construire un nouveau

Pour une raison quelconque, la solution de @tompaton n'a pas semblé fonctionner dans mon cas. Je n'ai pas mis beaucoup d'efforts là-dedans, alors peut-être que j'ai fait quelque chose de mal.

@roelvanduijnhoven Si vous utilisez la version 1.0, l'événement est maintenant chosen:updated

Merci @stof , ça a fait l'affaire.

Juste pour référence, changer une valeur dynamiquement en utilisant jQuery :

$("#single_example").val(2).trigger('chosen:updated');

Et pour référence, ceci est documenté : http://harvesthq.github.io/chosen/#change -update-events

Désolé @roelvanduijnhoven , mon commentaire était destiné à un autre problème, je l'ai maintenant supprimé. (gmail avait regroupé les mails, et j'ai posté un commentaire en répondant)

Merci beaucoup! Ce fil m'a sauvé la journée !
Enfin, j'ai multi-select avec des valeurs par défaut :)

Salut, je suis nouveau jquery et je viens de télécharger choisi. Je suis un peu confus par la façon dont définir/obtenir plusieurs valeurs dans le choix.

ce que j'essaie de faire est de créer une option dynamiquement lors du chargement de la page, puis de sélectionner les valeurs par défaut

Merci
Gouri

gpdhillion :
utilisez ceci
$('.chosen-select').val([1,2,3]).trigger('chosen:updated');

$ ("#id").val(id_value);
$("#id").chosen('destroy');
$("#id").choisi({});

Cette page vous a été utile?
0 / 5 - 0 notes