2012-05-04 36 views
8

Tôi có một số hộp chọn đã được đặt để chấp nhận nhiều giá trị. Có anyway mà tôi có thể sử dụng jQuery để có được giá trị được lựa chọn cuối cùng? Tôi đã thử sử dụng các mục sau:Nhận giá trị được chọn cuối cùng của nhiều phần tử chọn

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

và không trả lại gì. Tôi chỉ muốn giá trị được chọn cuối cùng chứ không phải mảng giá trị.

Cảm ơn bạn trước

Theo yêu cầu đây là HTML tôi đã cắt danh sách xuống vì nó quá dài:

<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> 

Sau đó ở phía trên cùng của trang Tôi đã sau (Tôi có 8 trong số này, nhưng tôi đã thấy một vài để bạn có thể thấy rằng tôi đang sử dụng nhiều trường hợp của các widget 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(); 

}); 

và sau đó tôi có điều này trong một file js riêng biệt:

$(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); 

    }); 

}) 

Cảm ơn bạn

+0

Nếu bạn đang tìm kiếm * tùy chọn * được chọn gần đây nhất thay vì tùy chọn đã chọn xuất hiện cuối cùng trong danh sách, xem http://stackoverflow.com/questions/8149532/how-to-get-the-last-selected-option-from-a-multiselect/ . Tuy nhiên, – Noumenon

Trả lời

14

Sử dụng :last selector:

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

thể thể là this trong bối cảnh của hàm callback không đề cập đến các yếu tố <select> chính nó, nhưng thay vào đó là một phần tử bên trong nó, hãy thử làm như sau:

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

Cũng có thể đáng để gọi console.log(this); bên trong chức năng gọi lại, để bạn biết bạn đang thực sự làm việc với yếu tố nào.

+1

+1, tôi khuyên bạn nên sử dụng '.filter()' với các lớp giả vì lý do hiệu suất. 'var latest_value = $ ('option', this) .filter (': selected: last'). Val();' – jaredhoyt

+0

Cảm ơn câu trả lời của bạn, nhưng không có đề xuất nào hoạt động. Tôi nhận được giá trị không xác định – Amara

+0

@Amara Trong trường hợp đó, chúng tôi sẽ cần thêm một chút thông tin trong câu hỏi - có vẻ như bộ chọn gốc bạn đã có cũng không chính xác. Bạn có thể bao gồm HTML có liên quan (HTML thực tế, không phải bất kỳ mã phía máy chủ nào tạo ra nó) và Javascript có gọi là dòng mã không? –

3

Sử dụng chức năng mới nhất: như thế này

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

Đây là đoạn mã để có được mới nhất nào được lựa chọn từ nhiều danh sách lựa chọn sử dụng 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

Xin chào Mahak câu trả lời của bạn hoạt động tốt. Tôi cần tìm giá trị chưa được chọn mới nhất? –

Các vấn đề liên quan