3

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;">

現在、data-parent をオンザフライで変更し、親 ID に応じて正しいデータを取得する小さな jquery 関数があります。これは data-parent を手動で設定すると機能しますが、jquery を介して data-parent を変更すると、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")

});

コンソールとインスペクターで data-parent を変更していることがわかりますが、select2 はまだ元の値を渡しています。トリガーを見てきましたが、これは何もしないようです。足りないものはありますか?

4

0 に答える 0