我使用 select2 3.5.2 处理较旧的遗留系统。
它使用的是较旧的隐藏字段方法,它目前传递的数据如下:
<input class="select2" data-url="/mapscrSearch/filterdata" data-parent="3" data-model="VMapscreenCategories" data-tags="1" data-searchterm="name" data-showitem="name" data-hiddenfield=".opcode_filters" data-allowuserinput="" data-enabled="1" type="text" value="" name="opcode_id" id="opcode_id" tabindex="-1" style="display: none;">
现在,我有一个小的 jquery 函数,它可以即时更改数据父级,并根据父级 ID 提取正确的数据;如果我手动设置数据父级,则此方法有效,但是当通过 jquery 更改数据父级时,它不会更新 select2 组件。
例如,我目前有:
$(document).ready(function(){
var opCodeFamily = $('#category_parent');
var opCodeParentId = $('#opcode_parent_id');
var opCodeDataUrl = $('#opcode_id');
// Set default
$(opCodeParentId).val($(opCodeFamily).val());
$(opCodeDataUrl).attr('data-parent', opCodeParentId.val());
// Change the value from parent select
$(opCodeFamily).change(function(){
$(opCodeParentId).val($(opCodeFamily).val());
$(opCodeDataUrl).attr('data-parent', opCodeParentId.val()).trigger("change");
console.log('data-parent set to: ' + opCodeParentId.val() + ', select2 passing: ' + opCodeDataUrl.data('parent'));
}).trigger("change")
});
我可以看到它在控制台和检查器中更改了数据父级,但 select2 仍在传递原始值。我看过触发器,但这似乎没有任何作用。有什么我想念的吗?