2012-07-26 6 views
17

Wie können wir herausfinden, ob ein Änderungsereignis auf einer Komponente ausgelöst das Ergebnis einer Auswahl oder Abwahl war? Wie können wir den Wert des gewählten Wertes greifen nur oder abgewählt Wert nur?.chosen.change() - Wie, um herauszufinden, ob es sich um eine ausgewählte oder ein Abwahl Aktion

$("#airports-select-2").chosen().change(function(event) { 
    console.log('select2 change', event, $(event.target).val()); 
}); 

Dieser Code gibt mir alle Werte, die bisher auf einer Multiselect-Komponente ausgewählt wurden? Wie kann dies geändert werden, um nur den Wert der neu ausgewählten oder nicht ausgewählten Komponente anzugeben?

+1

Wenn die gewählte Plugin Sie in der Rückruf diese Informationen nicht geben kann, werden Sie wahrscheinlich die Liste der ausgewählten Elemente in einem Array speichern müssen und dann vergleichen und jedes Mal, wenn Array aktualisieren die 'Änderung 'Callback heißt – MrOBrian

Antwort

3

Auf jeden Fall Feuer können Sie auslösen:

var target = $(event.target), 
    priorDataSet = target.data("chosen-values"), 
    currentDataSet = target.val(); 

//Diff and compare the delta here.  

target.data("chosen-values", currentDataSet); 

Vor der Aktualisierung der Daten für das DOM-Element können Sie bestimmen, diff, was das Delta zwischen den Wertemengen ist. Wenn es im alten und nicht im neuen ist, wird es entfernt. Wenn es im neuen und nicht im alten ist, dann wurde es hinzugefügt.

Wenn Sie ein Beispiel, wie das Delta zwischen zwei Arrays zu bestimmen, lassen Sie mich wissen und ich werde auch ein Beispiel für die Peitsche.

36

ausgewählt documentation:

ausgewählt, um die Standard-DOM-Ereignis auslöst, wenn eine Auswahl gemacht wird (es sendet auch ein ausgewählt oder abgewählt Parameter, der Ihnen sagt, die Option war geändert).

$('select').on('change', function(event, params) { 
    // can now use params.selected and params.deselected 
    }); 
+0

Wissen Sie, wie Sie ein Change Event abbrechen können? Angenommen, Benutzer wählt und Option aus und ein Änderungsereignis wird ausgelöst, aber basierend auf einer Bedingung möchte ich diese Auswahl zurücksetzen. – Shaunak

+0

Sie könnten