如何使用jQuery获取asp.net listbox当前选中选项并按选择顺序存储值
你之前的写法只能拿到按listbox原有DOM顺序排列的选中项,无法记录用户实际点击选择的先后顺序,因此需要额外维护一个数组来记录选择顺序。
完整实现代码
// 全局维护存储选择顺序的数组 let selectedOrder = []; $("#<%=lstQuery.ClientID %>").change(function(e) { // 获取当前所有选中项的值集合 const currentSelected = $(this).children('option:selected').map(function() { return $(this).val(); }).get(); // 过滤掉已经被取消选中的项 selectedOrder = selectedOrder.filter(val => currentSelected.includes(val)); // 将本次新增的选中项追加到数组末尾 currentSelected.forEach(val => { if (!selectedOrder.includes(val)) { selectedOrder.push(val); } }); // 按你需要的分隔符转成字符串,示例为逗号分隔 const selectedValueStr = selectedOrder.join(','); // 此处可直接使用selectedValueStr变量做后续逻辑 console.log('按选择顺序排列的选中值:', selectedValueStr); });
补充说明
- 如果需要重置选择顺序(比如触发表单重置、点击清空选中按钮),直接给
selectedOrder赋值为空数组即可 - 按住Ctrl批量多选的场景下,批量选中的多个项会按列表原有顺序追加到已有选择顺序的末尾,单独点选的项会严格按点击顺序追加
内容的提问来源于stack exchange,提问作者ManzoorPK
相关产品推荐
相关产品推荐

