2011-11-16 11 views
7

Szukam sposobu, aby uzyskać ostatnią opcję wybraną przez użytkownika w multiselect formularza przy użyciu jQuery.Jak uzyskać ostatnią wybraną opcję z multiseleksu?

Nie szukam ostatniego elementu na liście, ale ostatniego przedmiotu klikniętego przez użytkownika.

+4

Musisz samodzielnie śledzić ostatnio wybrany przedmiot. –

Odpowiedz

5

coś takiego

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

1. Nie ma potrzeby stosowania "każdego" i 2. nie używaj '$ (this) .val()', gdy 'this.value' jest łatwiejsze. –

+0

@AndyE dziękuję za wejście, lepiej? :] –

+1

tak, +1 dla Ciebie :-) –

0

Korzystanie this.value jako odpowiedź powyżej zawiedzie, gdy użytkownik Ctrl + kliknięcie i wybrany kilka pozycji - zwraca wartość pierwszego wyboru na liście, nawet jeśli nie był ostatnim kliknięciem. Wypróbuj to:

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]; 
    } 
}); 
Powiązane problemy