2012-05-04 2 views
8

У меня есть ряд полей выбора, которые были установлены для приема нескольких значений. Есть ли в любом случае, что я могу использовать jQuery для получения последнего выбранного значения? Я пробовал использовать следующее:Получить последнее выбранное значение элемента множественного выбора

var latest_value = $("option:selected",this).val(); 

И он ничего не возвращал. Мне нужно только последнее выбранное значение, а не массив значений.

Спасибо заранее

В соответствии с просьбой вот HTML я сократил список вниз, как это слишком долго:

<select id="style-list" name="style-list[]" class="attrs" multiple="multiple"> 
    <option value="7">2 Pack</option> 
    <option value="10">3 Pack</option> 
    <option value="12">4 Pack</option> 
</select> 

Затем в верхней части страницы я следующее (я имею 8 из них, но я показал несколько, так что вы можете увидеть, что я использую несколько экземпляров MULTISELECT виджета:

$(document).ready(function(){ 

    $("#product-list").multiselect({ 
     selectedList: 4, 
     noneSelectedText: "Product", 
     minWidth: 190 
    }).multiselectfilter(); 

    $("#style-list").multiselect({ 
     selectedList: 4, 
     noneSelectedText: "Style", 
     minWidth: 190 
    }).multiselectfilter(); 


    $("#feature-list").multiselect({ 
     selectedList: 4, 
     noneSelectedText: "Features", 
     minWidth: 190 
    }).multiselectfilter(); 

}); 

, а затем у меня есть это в отдельном файле JS:

$(function(){ 

    $(".attrs").on("multiselectclick", function(event, ui){ 

    var latest_value = $('option', this).filter(':selected:last').val(); 
    alert (latest_value); 

    var view = $("#currentview").val(); 
    var page = 1; 

    run_ajax(view,page); 

    }); 

}) 

Спасибо

+0

Если вы ищете для * последний выбранный вариант * вместо выбранного варианта, который отображается последним в списке, см. http://stackoverflow.com/questions/8149532/how-to-get-the-last-selected-option-from-a-multiselect/ , – Noumenon

ответ

14

Используйте :last селектор:

var latest_value = $("option:selected:last",this).val(); 

Это может быть, this в контексте функции обратного вызова не относится к <select> элементу а вместо этого в элемент внутри него, попробуйте следующее:

var latest_value = 
$(this).closest('select').find('option').filter(':selected:last').val(); 

В функции обратного вызова также можно позвонить console.log(this);, чтобы вы знали, с каким элементом вы работаете.

+1

+1, однако я бы предложил использовать '.filter()' с псевдоклассами по соображениям производительности. 'var last_value = $ ('option', this) .filter (': selected: last'). Val();' – jaredhoyt

+0

Спасибо за ваш ответ, но ни одно предложение не работало. Я получаю значение undefined – Amara

+0

@Amara В этом случае нам понадобится немного больше информации в вопросе - звуки, похожие на исходный селектор, который у вас был, также неверны. Можете ли вы включить соответствующий HTML (фактический HTML, а не какой-либо серверный код, который его генерирует) и Javascript, который вызывает эту строку кода? –

3

Использование последней функции: как этот

$("#style-list option:selected").last().val() 
3

Вот код, чтобы получить последнюю выбранную опцию из списка множественного выбора с помощью Jquery:

var selected; 
$(document).ready(function() { 
$('#SELECT_ID').on('click', function() { 
var latestSelected; 
if (selected) { 
    var currentOptionsValue = $(this).val(); 
    latestSelected = currentOptionsValue.filter(function(element) { 
    return selected.indexOf(element) < 0; 
    }); 
} 
selected = $(this).val(); 
console.log("latest selected option : " + latestSelected); 
}); 
}); 
+0

Привет, Махак, ваш ответ работает хорошо. Мне нужно найти последнее невыделенное значение? –

Смежные вопросы