You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bootstrap下拉框选值存入数组重复叠加问题求助

问题原因

你的代码逻辑结合Bootstrap Select的特性导致了这个异常:

  • Bootstrap Select组件在多选模式下,$(this).val()返回的是当前所有选中值组成的数组(比如单独选5时返回['5'],同时选5和6时返回['5','6'])。
  • 你每次触发change事件时,都把这个数组直接push到destinationVal里,相当于往数组里添加了一个新的数组元素,而非更新或追加单个值。所以第一次操作后数组是[['5']],第二次操作后就变成[['5'], ['5','6']]。
解决方案

根据你的实际需求,提供两种处理方式:

需求1:保存当前所有选中的完整值集合

如果希望每次选中后,destinationVal只保留当前所有选中的值(而非历史操作记录),直接替换数组即可,把push改成赋值:

var destinationVal = []

$('.col-location .selectpicker').on('change', function () {
    var selectedVals = $(this).val();
    destinationVal = selectedVals || []; // 处理没有选中值的情况
    console.log(destinationVal)
});

需求2:记录每次新增的单个选中值

如果只想记录每次新选中的那个值(而非所有选中值),需要对比之前的选中状态,找出新增项:

var destinationVal = [];
var prevSelected = []; // 保存上一次的选中值

$('.col-location .selectpicker').on('change', function () {
    var selectedVals = $(this).val() || [];
    // 找出新增的选中值
    var newVals = selectedVals.filter(val => !prevSelected.includes(val));
    // 把新增值追加到数组
    destinationVal.push(...newVals);
    // 更新上一次选中记录
    prevSelected = [...selectedVals];
    console.log(destinationVal)
});

内容的提问来源于stack exchange,提问作者Brandon.b

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:52:05