У меня есть 4 окна выбора, когда я меняю первый, делаю что-то вроде пустого, добавляю и устанавливаю новое значение для следующего.Select2 auto trigger event change
Потому что я использую select2, просто могу установить его с помощью $ .select2 ('val', 'value');
Только эта команда запускает событие изменения на другом выборе и делает каскад изменений.
Обратите внимание, что .empty() и append() не будут запускаться (и мне это нравится), даже .val() не должен запускать его, но когда вы используете select2, вы не можете получить доступ к новому val с помощью этого.
код здесь:
function anidado(selectorOrigen,selectorDestino) {
id = selectorOrigen;
alert(id);
destino = "#"+selectorDestino;
valor = $('#'+id).find(":selected").val();
$.ajax({
method: "GET",
url: "blanco2.php",
data: { select: id, valor: valor }
})
.done(function(msg) {
obj = $.parseJSON(msg);
if (obj.length>0) {
$(destino).empty().append('<option value="x">Select an ---</option>').select2("val", "x");
$.each(obj,function(index) {
valor = obj[index].codigo;
texto = obj[index].descripcion;
$(destino).append('<option value=' + valor + '>' + texto + '</option>');
$(destino).prop("readonly",false);
});
} else {
$(destino).empty().append('<option value=""></option>').select2("val", "");
}
});
return false;
}
$("select").change(function() {
selectorOrigen = this.id;
if (selectorOrigen === 'pais') {
selectorDestino = 'ua';
} else if (selectorOrigen === 'ua') {
selectorDestino = 'unidad';
} else if (selectorOrigen === 'unidad') {
selectorDestino = 'rol';
} else if (selectorOrigen === 'rol') {
selectorDestino = 'categoria';
} else { return false; }
anidado(selectorOrigen,selectorDestino);
});
Это было довольно один, но он не работает для меня Clear select2 without triggering change event
Он предлагает использовать что-то вроде
$docInput.select2('data', null, false);
Я просто нужно установить новую выбранные опция без запуска события изменения. Любая альтернатива .select2 ("val", "x") при использовании модуля select2?