2016-04-14 6 views
1

私はAjaxでSelect2入力を動的にロードしています。しかし、すべてがうまくいきますが、別の値を選択しようとすると何らかの理由で変更されません。ここに私の問題の例があります:https://gyazo.com/f9ad7c3ead5fcd1d62740cc44f8d9691Select2は値を変更できません

ご覧のとおり、値をクリックしても変わりません。なぜこれが起こるのですか?おそらく、最初の値ともう1つの値のIDが1(データベース内の別のテーブルのデータ)だが異なるテキストであると言うと、役立つかもしれません...どうすれば動作させることができますか?

$('.partnersupplierselect').select2({ 
    ajax: { 
     dataType: "json", 
     type: "POST", 
     data: function (params) { 
      var group = $(this).parent().parent(); 
      var choice = group.find('.partnersupplier:radio:checked').val(); 
      return { 
       term: params.term, 
       '_token': token, 
       'choice': choice 
      }; 
     }, 
     url: '{{asset('logs/create/bmi/getpartnerssuppliers')}}', 
     cache: true, 
     processResults: function (data) { 
      return { 
       results: data 
      }; 
     } 
    }, 
    "language": { 
     "noResults": function() { 
      return "Geen partners/leveranciers gevonden."; 
     } 
    }, 
    escapeMarkup: function (markup) { 
     return markup; 
    } 
}); 


$('.partnersupplier').on('change', function(){ 
    var group = $(this).parent().parent(); 
    group.find('.partnersupplierselect').select2('val', ''); 
    group.find('.partnersupplierselect').select2('data', null); 
}); 

ここにHTMLがありますが、それは問題ではありません。しかし誰かがそれを見たい場合:

<div class="group"> 
    <label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="partner"> 
     {{Form::radio('partnersupplier', 'partner', true, array('class' => 'mdl-radio__button partnersupplier', 'id' => 'partner'))}} 
     <span class="mdl-radio__label">Test1 </span> 
    </label> 
    <label class="mdl-radio mdl-js-radio mdl-js-ripple-effect margin-radio" for="supplier"> 
     {{Form::radio('partnersupplier', 'supplier', false, array('class' => 'mdl-radio__button partnersupplier', 'id' => 'supplier'))}} 
     <span class="mdl-radio__label">Test2 </span> 
    </label> 
    <div class="form-group selectdiv" > 
     <label for="yearlypartnersuppliermaintainance">Blablabla<br></label> 
     <select id="yearlypartnersuppliermaintainance" name="yearlypartnersuppliermaintainance" class="searchselect searchselectstyle partnersupplierselect"> 
     </select> 
    </div> 
</div> 
+0

select2の値を手動で変更した後に、変更イベントをトリガーします。 –

+0

@ArumugaRajaを動作させることができません – Markinson

答えて

0

私はそれを理解しました!

私が変更されました:

$('.partnersupplier').on('change', function(){ 
    var group = $(this).parent().parent(); 
    group.find('.partnersupplierselect').select2('val', ''); 
    group.find('.partnersupplierselect').select2('data', null); 
}); 

をする:

$('.partnersupplier').on('change', function(){ 
    var group = $(this).parent().parent(); 
    group.find('.partnersupplierselect').empty().trigger('change'); 
}); 

何らかの理由で、これは動作し、最初の事はしません。奇妙ですが、少なくとも私はそれを働かせました!

+1

何かに値を設定することの違いが、 '.empty()'のように何かの内容を取り除くこととはまったく異なっている理由を研究することをお勧めします。また、 'var group = $(this)).parents( '。group');'を見てください。そうすれば、コンテナのレベルを変更するとコードがより堅牢になります。 –

関連する問題