2011-11-16 14 views
7

Sto cercando un modo per ottenere l'ultima opzione selezionata dall'utente in un modulo a selezione multipla usando jQuery.Come ottenere l'ultima opzione selezionata da un multiselect?

Non sto cercando l'ultimo elemento nell'elenco, ma per l'ultimo elemento l'utente ha fatto clic.

+4

Devi tenere traccia dell'ultimo elemento selezionato da solo. –

risposta

5

Qualcosa di simile

var lastSelected = null; 
$('.multiSelectOptions').click(function(){ 
    lastSelected = this.value; 
}); 
+1

1. Non c'è bisogno di 'each', e 2. non usare' $ (this) .val() 'quando' this.value' è più facile. –

+0

@AndyE grazie per l'input, meglio? :] –

+1

sì, +1 per te :-) –

0

Utilizzando this.value come nella risposta di cui sopra non riesce quando l'utente ha Ctrl + clic e selezionati più elementi - restituisce il valore della prima selezione nella lista, anche se questo non è stato l'ultimo clic. Prova questo:

var previouslySelected = []; 
$("#myMultiselect").change (function() { 
    // Get newly selected elements 
    var currentlySelected = $(this).val(); 
    var newSelections = currentlySelected.filter(function (element) { 
     return previouslySelected.indexOf(element) == -1; 
    }); 
    previouslySelected = currentlySelected; 

    if (newSelections.length) { 
     // If there are multiple new selections, we'll take the last in the list 
     var lastSelected = newSelections.reverse()[0]; 
    } 
}); 
Problemi correlati