jquery - original - .chosen.change(): cómo averiguar si fue una acción de selección o de deselección
jquery get selected option text (3)
De la documentation elegida:
Elegido activa el evento DOM estándar cada vez que se realiza una selección (también envía un parámetro seleccionado o no seleccionado que le indica qué opción se cambió).
$(''select'').on(''change'', function(event, params) {
// can now use params.selected and params.deselected
});
¿Cómo podemos averiguar si un evento de cambio desencadenado en un componente fue el resultado de una selección o una deselección? ¿Cómo podemos tomar el valor del valor seleccionado solo o el valor deseleccionado solamente?
$("#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 de selección múltiple? ¿Cómo se puede cambiar para que solo me dé valor del componente recién seleccionado o deseleccionado?
En cada evento de fuego puedes 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 hacer una diferencia para determinar cuál es el delta entre los conjuntos de valores. Si está en lo viejo y no en lo nuevo, se elimina. Si está en lo nuevo y no en lo viejo, entonces se ha agregado.
Si necesita un ejemplo de cómo determinar el delta entre dos matrices, avíseme y también le daré un ejemplo.
La documentación elegida describe los eventos desencadenados.
Para detectar el evento en "search-choice-close", puede intentar lo siguiente:
$(''#selectID'').on(''change'', function(change, deselected) { //selected OR deselected
//do something
console.log(''Value Deselected'');
});