2012-05-04 186 views
8

我有一些已經設置爲接受多個值的選擇框。無論如何,我可以使用jQuery來獲取最後選定的值?我試過使用以下內容:獲取多個select元素的最後一個選定值

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,但我已經展示了幾個,這樣你可以看到,我使用的多選控件的多個實例:

$(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 latest_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

嗨Mahak你的回答很好。我需要找到最新的未選定的值? –

相關問題