82 votes

Comment réinitialiser un formulaire avec le plugin jQuery chosen ?

J'ai un tas de select dans un formulaire avec lequel J'utilise le plugin Jquery Chosen. . Comment puis-je réinitialiser le formulaire ? Ce qui suit ne fonctionne pas :

<input type="reset" />

2 votes

Vous devez changer votre réponse acceptée par la réponse de Jack O'Neill. Les autres solutions ne fonctionnent plus.

1 votes

Veuillez changer vos réponses acceptées en réponses de Jack O'Neill. car la dernière version déclenchée s'appelle maintenant :updated

1 votes

@Jame & Well wisher : Ce n'est pas comme si nous allions changer toutes les réponses aux questions sur ce site à chaque mise à jour d'un plugin. La solution était correcte à l'époque. RobertWaddell a mis un commentaire sur la réponse, je crois que c'est la voie à suivre.

192voto

sottenad Points 1391

Vous devrez réinitialiser la valeur du champ, puis déclencher la fonction liszt:updated sur l'entrée pour qu'elle soit mise à jour, j'ai fait un bricolage avec un exemple fonctionnel ici.

http://jsfiddle.net/VSpa3/3/

$(".chzn-select").chosen();
$('a').click(function(){
    $(".chzn-select").val('').trigger("liszt:updated");
});

Depuis la sortie de chosen v1.0, le déclencheur s'appelle désormais "chosen:updated". Toute personne utilisant cette nouvelle version doit déclencher la mise à jour en utilisant

$(".chosen-select").val('').trigger("chosen:updated");

17 votes

Bonne réponse ! Avec la dernière version de Chosen, cela devrait être "("chosen:updated")".

2 votes

Excellente réponse ! Mais est-il possible de réinitialiser et d'afficher à nouveau l'espace réservé d'origine ?

1 votes

Cela ne fonctionne toujours pas. Je remplace dynamiquement mon select via des appels Ajax (méthode jQuery load()). Puis j'émets un nouveau chosen().trigger("chosen:updated") ; et cela ne fonctionne pas. La recherche choisie ne fonctionne toujours pas sur le nouveau select.

53voto

Jack O'Neill Points 269

Depuis la sortie de chosen v1.0, le déclencheur s'appelle désormais "chosen:updated". Toute personne utilisant cette nouvelle version doit déclencher la mise à jour en utilisant

$(".chosen-select").val('').trigger("chosen:updated");

1 votes

Cela devrait être la bonne réponse en raison des changements. Aucune des autres solutions que j'ai trouvées ne fonctionne correctement. Merci.

1 votes

Mais pas le travail ! Si le select est dinamiquement remplacé par un autre select (méthode jQuery load()) avec le même id/nom, la recherche cesse de fonctionner sur le nouveau select. J'ai essayé d'appeler .chosen() sur la nouvelle sélection, d'appeler .chosen('destroy'), d'appeler .trigger("chosen:updated"), et des combinaisons de ceux-ci.

14voto

djtux Points 9

Vous pouvez essayer ceci :

$('select').chosen('destroy');  

$('select').prop("selectedIndex", -1);   
$('select').chosen();

11voto

user2928326 Points 138

Pour que la réinitialisation fonctionne naturellement, utilisez ceci :

$("input[type='reset'], button[type='reset']").click(function(e){
    e.preventDefault();

    var form = $(this).closest('form').get(0);
    form.reset();

    $(form).find('select').each(function(i, v) {
        $(v).trigger('chosen:updated');
    });
}

1 votes

Utiliser form.reset() puis déclencher chosen:update est la meilleure solution, surtout si vous souhaitez présenter le formulaire tel qu'il était affiché à l'origine. L'activation de .val('') ne ramène pas le formulaire aux valeurs par défaut.

0 votes

Cela fonctionne. N'oubliez pas de réinitialiser manuellement les comboboxes (select) ajoutés dynamiquement au DOM.

-1voto

Andreas Lyngstad Points 2565

Parfois, vous devez réinitialiser la sélection sur laquelle l'élu est appelé.

Je fais ça

jQuery.fn.chosen_reset = function(n){
  $(this).chosen('destroy');
  $(this).prop('selectedIndex', 0);
  $(this).chosen(n)
}

Et appelez cette fonction comme ceci, avec les options comme argument

$('select').chosen_reset({width:'369px'});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X