2016-04-14 120 views
1

我使用Ajax動態加載Select2輸入。一切工作正常,但是,當我嘗試選擇一個不同的值,它不會因爲某些原因而改變。以下是我的問題示例:https://gyazo.com/f9ad7c3ead5fcd1d62740cc44f8d9691Select2無法更改值

正如您所看到的,當我單擊它時,該值不會改變。爲什麼會發生?當我說第一個值和另一個值的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');'這樣如果你改變了容器的級別,你的代碼就更加健壯。 –