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
相关产品推荐
相关产品推荐

