2012-07-26 24 views
17

¿Cómo podemos determinar si un evento de cambio activado en un componente fue el resultado de una selección o una anulación de selección? ¿Cómo podemos tomar el valor solo del valor seleccionado o el valor deseleccionado?.chosen.change() - cómo saber si se trata de una acción de selección o anulación de selección

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

Este código me da todos los valores que se han seleccionado hasta ahora en un componente multiselect? ¿Cómo se puede cambiar esto para solo darme el valor del componente recién seleccionado o deseleccionado?

+1

Si el plugin elegido no le puede dar esa información en la devolución de llamada, es probable que tenga que guardar la lista de elementos seleccionados en una matriz y luego comparar y actualizar esa matriz cada vez que el cambio ' 'la devolución de llamada se llama – MrOBrian

Respuesta

3

En cada caso de incendio puede disparar:

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

//Diff and compare the delta here.  

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

Antes de la actualización de los datos para el elemento DOM puede diff para determinar que el delta se encuentra entre los conjuntos de valores. Si está en el antiguo y no en el nuevo, se elimina. Si está en el nuevo y no en el anterior, entonces se ha agregado.

Si necesita un ejemplo de cómo determinar el delta entre dos matrices, hágamelo saber y también le daré un ejemplo.

36

De Chosen documentation:

Elegido activa el evento DOM estándar cada vez que se realiza una selección (que también envía un seleccionado o deselecciona parámetro que dice que el que opción era cambiado).

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

¿Sucede saber cómo cancelar un evento de cambio? supongamos que el usuario selecciona y la opción y se activa un evento de cambio, pero en función de alguna condición, quiero revertir esta selección. – Shaunak

+0

Puede revertir los valores