简体   繁体   English

Select2无法更改值

[英]Select2 can't change value

I am dynamically loading a Select2 input with Ajax. 我正在使用Ajax动态加载Select2输入。 Everything works fine, however, when I try to select a different value, It won't change for some reason. 一切正常,但是,当我尝试选择不同的值时,它不会因某种原因而改变。 Here's an example of my problem: https://gyazo.com/f9ad7c3ead5fcd1d62740cc44f8d9691 这是我的问题的一个例子: https//gyazo.com/f9ad7c3ead5fcd1d62740cc44f8d9691

As you can see, the value doesn't change when I click on it. 如您所见,单击它时该值不会更改。 Why does this happen? 为什么会这样? Maybe it helps when I say that both the first value and the other value have an ID of 1 (its data from different tables in the database) but different texts... How can I make it work? 当我说第一个值和另一个值的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);
});

Here's the HTML, but that shouldn't be the problem. 这是HTML,但这应该不是问题。 But in case someone wants to see it: 但万一有人想看到它:

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

I figured it out! 我想到了!

I changed: 我变了:

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

to: 至:

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

For some reason, this works and the first thing doesn't. 出于某种原因,这是有效的,而第一件事则没有。 Weird, but at least I got it working! 很奇怪,但至少我搞定了!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM