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

无法获取select2下拉框变更前值,focus/click事件未触发如何解决

实现方案

无需依赖focus、click等无法触发的事件,仅通过可正常触发的change事件即可实现获取变更前值的需求,逻辑如下:

  1. 初始化时先将下拉框的初始值存入data属性
  2. 每次change事件触发时,先读取data中存储的上一次值,完成业务逻辑后再将当前最新值更新到data中,供下一次change事件读取

完整代码示例:

const $country = $content.find('.input.LOSS_STATS_COUNTRY');
// 初始化存储下拉框初始值
$country.data('pre', $country.val());

$country.on('change', function () {
    // 读取上一次存储的旧值
    const oldStatus = $(this).data('pre');
    const newStatus = $(this).val();
    // 此处添加你的业务逻辑
    console.log(newStatus + "-" + oldStatus);
    // 更新存储的值为当前最新值,供下一次变更使用
    $(this).data('pre', newStatus);
});

原方案失效原因说明

select2初始化后会隐藏原生的<select>元素,生成自定义的DOM结构供用户交互,所以直接给原生select绑定focus、click等事件自然无法触发,上述方案仅依赖可正常触发的change事件即可满足需求,不需要额外绑定其他事件。

内容的提问来源于stack exchange,提问作者user13677598

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:51:01