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

Select2 3.5.2版本Ajax组件select2:select事件无法触发求助

解决Select2 3.5.2中select2:select事件不触发的问题

核心问题:事件名称不匹配

Select2 3.x版本与4.x版本使用的事件名称完全不同,你当前绑定的select2:select是4.x版本的专属事件名,而3.5.2版本中,用户选择选项时触发的事件是select2-selected。这就是为什么手动选择时事件无响应,但通过trigger('select2:select')能生效的原因——你的监听代码刚好匹配了手动触发的事件名,但组件本身在3.x版本中不会抛出这个事件。

修正后的事件绑定代码

将事件名替换为select2-selected即可解决问题:

$(function() {
    $('#div89').on('select2-selected', function(e) {
        var d = $("#div89").select2('data');
    
        console.log('ddddd -> ', d, e);
        
        var elemDopSogl1 = document.getElementById("inputTextAddCoordT");
        var elemDopSogl2 = document.getElementById("naAddCoord");
        
        var a2 = "";
        var a4 = "";
        
        for (var i = 0; i <= d.length - 1; i++) {
            if(i == 0) {
                a2 += d[i].name;
                a4 += d[i].NotesAddress;
            } else {
                a2 = a2 + "; " + d[i].name;
                a4 = a4 + "; " + d[i].NotesAddress;
            }
        }
        
        elemDopSogl1.value = a2;
        elemDopSogl2.value = a4;
    });
})

额外检查点

  • 事件绑定时机:你的代码已经用$(function(){})确保在DOM加载完成后绑定事件,这没问题,但要保证Select2初始化代码也在DOM就绪后执行(当前代码逻辑符合要求)。
  • 控制台错误排查:打开浏览器开发者工具控制台,检查是否存在JavaScript错误(比如Select2初始化失败、AJAX请求异常等),这类错误可能中断事件触发流程。
  • 多选模式适配:在多选模式下,select2-selected会在每一次选择操作时触发,你的代码已经处理了多选数据的拼接逻辑,无需额外调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:15:44