web-dev-qa-db-fra.com

Comment déclencher un événement de changement pour Chosen (jQuery)

Avant de cliquer sur le bouton de réinitialisation, je choisis "Société" dans Choisi (liste déroulante). L'événement se produit normalement après avoir cliqué sur réinitialiser. Je choisis à nouveau "Société" mais l'événement change dans la liste déroulante ne se produit pas.

Quelqu'un pourrait-il me dire comment déclencher l'événement de changement pour la liste déroulante après avoir cliqué sur le bouton de réinitialisation, puis sur le même élément?

Le code que j'ai jusqu'à présent:

$("#mainMenu").change(function(e){
    e.preventDefault();
    loadFirstManu(true);
});

Code pour le bouton de réinitialisation:

$("#btn_reset").click(function() {
  CKEDITOR.instances.ckeditor.setData('');
  $('.mchosen').each(function() {
     $(this).val('').trigger('liszt:updated');
     $('#submenu').attr('disabled', 'disabled').html('');
     $('#secondsubmenu').attr('disabled', 'disabled').html('');
     $('#s-menu').removeClass('required').html('');
     $('#secondsubmenu').removeClass('validate[required]');
     $('#tabmenu').attr('disabled', 'disabled').html('');
     $('#tab').removeClass('required').html('');
  });

});

18
Leo

Voici ce que j'ai compris:

$('#my-select').val(5).trigger("liszt:updated")

liszt:updated ne fonctionne plus dans la nouvelle version de choisi à la place, utilisez ci-dessous comme Alexandru Cojan's réponse suggérant

 trigger("chosen:updated");
25
bonyiii

pour la nouvelle version de l'option choisie, l'événement est "choisi: mis à jour"

$(selector).trigger("chosen:updated")
9
Alexandru Cojan

Si j'ai juste besoin de rafraîchir la valeur dans le choix choisi - .trigger('chosen:updated') suffit. Mais si j'ai un gestionnaire de changement et que je veux qu'il soit appelé - je dois faire .trigger('chosen:updated').change()

7
Alexander

Je ne sais pas si c'est votre cas ou non, mais votre code ci-dessus devrait fonctionner,

$("#mainMenu").change(function(e){
        e.preventDefault();
        loadFirstManu(true);
    });

mais veuillez noter que l'événement "change" se produit sur la plupart des navigateurs lorsque vous flo l'entrée de sélection

Ainsi, lorsque vous cliquez sur reset, juste avant d'exécuter l'action de réinitialisation, onchange est déclenché.

Maintenant, essayez de cliquer en dehors de l'entrée de sélection après avoir modifié la sélection et voyez si cela fonctionne toujours ou non

0
Shehabic

Vous devriez peut-être essayer d'utiliser .on, car votre $ ('# mainMenu') peut avoir changé quelque part (impossible à dire sans exemple). Essayez de faire ceci:

$("body").on('change','#mainMenu',function(){ 
  ...
});

ou n'importe quel sélecteur de parents au lieu d'un corps "lourd"

0
apoq

Si je ne me trompe pas, vous voulez déclencher le changement d'événement après avoir cliqué sur le bouton de réinitialisation. vous pouvez le faire en ajoutant simplement une ligne à votre code // code

     $("#btn_reset").click(function(){
       // your code here
       $("#mainMenu").trigger('change'); 
       //you can write this as per your requirements ie. at start or end.

      });
0
mohan.gade