2013-02-27 8 views
12

Bevor ich auf die Schaltfläche Zurücksetzen klicke, wähle ich "Firma" in der Auswahlliste (Dropdownliste). Das Ereignis tritt normalerweise auf, nachdem ich auf Zurücksetzen geklickt habe. Ich wähle wieder "Firma", aber Ereignis change in der Dropdown-Liste tritt nicht auf.So lösen Sie ein Änderungsereignis für Chosen aus (jQuery)

Könnte mir jemand sagen, wie man das Änderungsereignis für die Dropdownliste auslöst, nachdem ich auf die Reset-Schaltfläche geklickt habe und dann dasselbe Element?

Der Code habe ich bisher:

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

-Code für die Reset-Taste:

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

});

Antwort

19

Das ist, was ich herausgefunden:

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

liszt:updated nicht mehr von ausgewählten in der neuen Version arbeiten stattdessen unten als Alexandru Cojan's Antwort

trigger("chosen:updated"); 
+23

Der Trigger ist jetzt '" gewählt: aktualisiert "' – Johannes

+1

Vielen Dank für die Korrektur. Dies ist die neue Auslösernamenskonvention für 1.0, wie in [die Änderungshinweise] (https://github.com/harvesthq/chosen/releases/tag/1.0.0) angegeben. – arvidkahl

0

Ich weiß nicht, ob dies der Fall ist oder nicht, aber oben sollten Sie den Code arbeiten,

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

aber bitte beachten Sie, dass „change“ -Ereignis auf den meisten Browsern tritt auf, wenn Sie unfocus der Auswahl

Eingang

Also, wenn Sie auf zurückgesetzt, kurz vor der Reset-Aktion Ausführen der Onchange ausgelöst wird.

versuchen nun außerhalb des Auswahleingangs klicken, nachdem die Auswahl zu ändern und sehen, ob es funktioniert immer noch oder nicht

+0

das Ereignis auftreten, bevor ich auf Reset-Taste klicken, nachdem ich das Element, das ich gewählt habe auswählen, klicken Sie auf zurücksetzen, es ist kein Ereignis auftreten. – Leo

+0

Da, ich kenne nicht die Struktur Ihres HTML/Code, können Sie etwas wie Alert hinzufügen ("ausgelöst"); in dem .change() -Funktion, die Sie verwenden, um zu wissen, wo ist der Fehler genau – Shehabix

+0

nach Klick zurücksetzen und das gleiche Element vor dem Klick zurücksetzen Ereignis nicht auftreten, ich habe auch Alarm ("Hallo") gesetzt, um das Ereignis auftreten oder nicht endgültig noch nicht auftreten. – Leo

0

Vielleicht sollten Sie versuchen, .on verwenden, wie Ihr $ (‚# mainMenu‘) geändert irgendwo haben (kann sage ich ohne ein Beispiel). Versuchen Sie, dies zu tun:

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

oder jeder Elternteil Wähler anstelle von „schweren“ Körper

0

Wenn ich mich nicht falsch, Sie zu verstehen dann die Ereignisänderung nach Klick auf die Reset-Taste ausgelöst werden soll. Sie können dies tun, indem Sie einfach eine Zeile zu Ihrem Code hinzufügen // Code

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

     }); 
7

für neuere Version gewählt Fall darauf hindeutet, wird „gewählt: updat „Ed

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

Wenn ich brauche nur Wert zu aktualisieren in ausgewählten gewählt - .trigger('chosen:updated') genügt. Aber wenn ich Change-Handler habe und will es aufgerufen werden - ich muss tun .trigger('chosen:updated').change()

+0

das hat bei mir funktioniert !! – AndeeC

Verwandte Themen