jQuery触发select2:selecting事件无法传递参数如何解决
问题原因
- jQuery的
trigger()方法如果直接将自定义数据作为第二个参数传递,该数据会作为事件处理函数的额外入参传入,不会自动合并到事件对象e的属性中,因此DAL原生绑定的处理函数从e.params读取数据时无法获取到你传递的内容。 - 额外注意:你当前传递的
data中没有create_id: true字段,就算参数传递成功,也会被DAL的判断逻辑直接拦截return,不会执行后续自定义逻辑。
修复后的触发代码
// 手动构造事件对象,自定义params属性和DAL的读取逻辑对齐 const selectEvent = jQuery.Event('select2:selecting'); selectEvent.params = { args: { data: { id: "324856", selected_text: "ABERTAMY (Karlovy Vary)", text: "ABERTAMY (Karlovy Vary)", // 需要走DAL的创建逻辑就保留这行,不需要可删除,同时对应修改DAL里的判断逻辑 create_id: true } } }; // 触发构造好的自定义事件 $( "#id_hlavni_katastr" ).trigger(selectEvent);
补充说明
如果你只是需要直接修改选中项,不需要触发select2:selecting的前置校验逻辑,可以直接调用select2原生赋值方法,实现更简单:
$("#id_hlavni_katastr").val("324856").trigger("change");
内容的提问来源于stack exchange,提问作者Jiří Pešík
相关产品推荐
相关产品推荐

