У меня есть поле выбора:
<select class = "form-control" name = "nacionalidade_id" id = "nacionalidade_id">
</select>
Это получает данные от ajax:
$('#nacionalidade_id').select2({
placeholder: 'Selecione o país de nascimento',
ajax: {
url: 'assets/dados/nacionalidade.php',
dataType: 'json',
delay: 250,
processResults: function(data){
return{
results: data
};
},
cache: true
}
});
Националидаде.php:
$result = mysqli_query($con, "SELECT * FROM nacionalidades where descricao like '%" . $_GET['q'] . "%' limit 20");
$json = [];
if (mysqli_num_rows($result) > 0 ){
while ($nacionalidade = mysqli_fetch_assoc($result)){
$json[] = ['id'=>$nacionalidade['id'], 'text'=>$nacionalidade['descricao']];
}
echo json_encode($json);
}
Я хочу выбрать вариант, когда id = 45 использует jquery.
Я пытаюсь:
function buscaCidadao(){
$.ajax({
url: 'assets/funcoesPhp/buscaCidadao.php',
type: 'get',
dataType: 'json',
contentType: 'application/json',
data: {'cns': $('#cns').val()},
success: function (data) {
$("#nacionalidade_id").val(45).change();
},
});
}
Но это не работа. Любая идея?
Существует этот код: https://select2.org/programmatic-control/add-select-clear-items#preselecting-options-in-an-remotely-sourced-ajax-select2, но я не могу адаптировать его для своего кода. Любая помощь.
@LahiruTM не работает
Как вы это устанавливаете. Поскольку я использую этот метод, когда хочу отредактировать уже сохраненную строку, нажав кнопку «Редактировать», чтобы установить сохраненные данные в форму редактирования перед ее сохранением, он работает отлично.
как видите здесь работает
@LahiruTM Я редактирую свой пост, чтобы вы видели
проверьте свои версии select2 и jquery. Также проверьте консоль javascript вашего браузера на наличие ошибок и предупреждений. В противном случае ваш код в порядке.
@LahiruTM select2 4.0.6 / jquery 3.3.1.min / без ошибок или предупреждений на консоли
Я нашел эту ссылку select2.org/programmatic-control/…, но не могу адаптироваться к своему коду. Любая помощь?

Пытаться
$('#nacionalidade_id').val('45');
$('#nacionalidade_id').trigger('change');
См. документы select2 по адресу https://select2.org/programmatic-control/add-select-clear-items#selecting-options.
Не работает, читая ссылку я нашел этот select2.org/programmatic-control/… но я не могу создать код
Решение состоит в том, чтобы создать новую опцию:
var data = {
id: 45,
text: 'TEXT DESCRIPTION'
};
var newOption = new Option(data.text, data.id, false, false);
$('#nacionalidade_id').append(newOption).trigger('change');
попробуйте $("#nacionalidade_id").val(45).change();