javascript - 如何获取多选列表框的值(按单击顺序)?

标签 javascript jquery

我有一个多选列表框并使用获取所选值的列表

$('[id*=ListBox]').click(function(){

    var selectedItems = $(this).val();
    var lastItem = $("[id*=ListBox] option:selected").last().val();

});

这将返回以逗号分隔的所选值的数组。但问题是数组始终按值排序,而不是按选定值的单击顺序生成。

3000、3005、3009、3011

但是,如果我首先单击值为 3011 的项目,然后单击 3005 ,然后单击 3000 ,最后单击 3009 ,我想要按该顺序排列值

3011、3005、3000、3009

如何按照点击顺序获取选定的值?

编辑

获取最新选择的值也解决了我的问题。

如何获取最近选择的项目?

最佳答案

首先,设置一个事件,每当用户单击时,该事件都会向每个列表框项目添加一个整数。将整数存储在页面上某处的隐藏元素中,或者通过在元素上设置数据属性来执行一些巧妙的操作,如下所示:

$(function() {
    $("#ListBox").data("selected-index", 0);
});

$("#ListBox option").on("click", function() {
    var currentSelectedIndex = $("#ListBox").data("selected-index");
    $(this).data("counter", currentSelectedIndex++);
});

然后为了按照点击顺序获取所有这些:

function getOrderOfItems() {
    var arrayOfSelected = new Array(),

    // Use Math and .map() to get the highest data-counter:

    counters = $("#ListBox option[data-counter]").map(function() {
        return parseInt($(this).data("counter"), 10);
    }).get();

    var highestCounter = Math.max.apply(Math, counters);

    // We have the highest counter, so use a for loop to select the selected options.
    for (var i = 0; i < highestCounter; i++) {
        arrayOfSelected.push($("#ListBox option[data-counter=" + i + "]"));
    }

    console.log(arrayOfSelected);
    return arrayOfSelected;
}

其中 arrayOfSelected 包含按单击顺序排列的 ListBox 项目。

关于javascript - 如何获取多选列表框的值(按单击顺序)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32251585/

相关文章:

javascript - 输入验证检查

javascript - 在 javascript 对象中引用另一个字段

javascript - PHP通过URL自动填充选择框

javascript - JQuery:用html替换字符串中的多个子字符串实例而不会出错

jQuery 查找具有特定属性的非特定元素

javascript - 遍历我的表格,我怎么知道复选框是否被选中?

javascript - 如何获取 jquery datepicker 的当前事件实例

javascript - 在焦点上选择文本框,在模糊时取消选择

javascript - jQuery 表格过滤器

php - js 无法识别重音字符 onclick