2013-02-27 12 views
12

Prima di fare clic sul pulsante di ripristino, scelgo "Azienda" in Scelto (elenco a discesa). L'evento si verifica normalmente dopo aver fatto clic su Ripristina. Scelgo di nuovo "Azienda" ma l'evento change nell'elenco a discesa non si verifica.Come attivare l'evento di modifica per Chosen (jQuery)

Qualcuno potrebbe dirmi come attivare l'evento change per dropdownlist dopo aver fatto clic sul pulsante di ripristino e quindi lo stesso elemento?

Il codice che ho finora:

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

codice per il pulsante di reset:

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

});

risposta

19

Questo è quello che ho capito:

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

liszt:updated non funziona più nella nuova versione della scelta di utilizzare invece qui di seguito come Alexandru Cojan's risposta suggerendo

trigger("chosen:updated"); 
+23

Il trigger è ora "" scelto: aggiornato "' – Johannes

+1

Grazie per la correzione. Questa è la nuova convenzione nome trigger per 1.0, come indicato in [Note di modifica] (https://github.com/harvesthq/chosen/releases/tag/1.0.0). – arvidkahl

0

Non so se questo è il vostro caso o no, ma il vostro codice di cui sopra dovrebbe funzionare,

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

ma si prega di notare che "il cambiamento" evento si verifica sulla maggior parte dei browser quando si unfocus select ingresso

Quindi, quando si fa clic su azzerare, poco prima di eseguire l'azione di ripristino della onchange viene attivato.

Ora prova a cliccare al di fuori della selezione ingresso dopo aver cambiato la selezione e vedere se funziona ancora o no

+0

l'evento si verifica prima che clicco sul pulsante di reset dopo che seleziono l'elemento che ho scelto prima di fare clic su reset non si verifica alcun evento. – Leo

+0

Dato che non conosco la struttura del codice html, è possibile aggiungere qualcosa come alert ("triggered"); nel .funzione change() che stai utilizzando per sapere esattamente dove si trova l'errore – Shehabix

+0

dopo aver fatto clic su reset e lo stesso elemento prima che l'evento di azzeramento del clic non si verifichi, ho anche messo un avviso ("Hello") per rilevare che l'evento si verifica o meno non si verifica. – Leo

0

Forse si dovrebbe provare a utilizzare .on, come i vostri $ ('# mainMenu') potrebbe avere modificato da qualche parte (può dire senza un esempio). Prova a fare questo:

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

o qualsiasi selettore genitore al posto del corpo "pesante"

0

Se non sbaglio a capire voi allora si desidera attivare il cambiamento evento dopo click sul pulsante di reset. si può fare questo semplicemente aggiungendo una riga al codice // codice

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

     }); 
7

per la versione più recente del scelto la manifestazione è "scelto: updat ed"

$(selector).trigger("chosen:updated") 
4

se ho bisogno solo per aggiornare valore scelto di selezione - .trigger('chosen:updated') è sufficiente. Ma se ho un gestore di modifiche e voglio che venga chiamato - ho bisogno di fare .trigger('chosen:updated').change()

+0

questo ha funzionato per me !! – AndeeC

Problemi correlati