Активация Select2: выберите вместо изменения - PullRequest
0 голосов
/ 07 июня 2018

Событие select2:select предоставляет вам данные о выбранном объекте.change событие не имеет.Следовательно, для инициализации моего выбора:

async function initSelect(jobj, getDataParams, width, callback) {
try {
    if (jobj.data('select2Id') || jobj.data('select2')) {
        jobj.select2('destroy').empty()
    }
} catch (e){}

try {

    if(callback) {
        jobj.on('select2:select', function (e) {
            callback(e)
        });
    }
  }
}

У меня есть зависимые выборы, например, если вы выбираете SelectA, SelectB инициализируется.Я хотел бы иметь возможность программно выбирать элемент в SelectA и запускать его select2:select событие, которое затем уничтожит и снова заполнит SelectB.

В настоящее время все ответы, которые я видел в Интернете, говорят $('#selectA').val(301235).trigger('change'), но это не вызывает событие select2:select в SelectA, и поэтому я не могу выполнить обратный вызов, который знает данные selectA для использования для заполнения SelectB.

1 Ответ

0 голосов
/ 07 июня 2018

Похоже, вместо того, чтобы пытаться получить данные из события, как это было предоставлено мне в select2:select, но не change, просто получить данные из текущего выбранного элемента в обратном вызове:

if(callback) {
    jobj.on('change', function (e) {
        // var data = jobj.select2('data')[0]);
        callback(e)
    });
}
...