Измените значение ajax select2 с помощью jquery - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть поле выбора:

<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
    }
});

nacionalidade.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, но я не могу адаптироваться к своему коду.Любая помощь.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Решением является создание нового opion:

var data = {
    id: 45,
    text: 'TEXT DESCRIPTION'
};
var newOption = new Option(data.text, data.id, false, false);
$('#nacionalidade_id').append(newOption).trigger('change');
0 голосов
/ 10 февраля 2019

Попробуйте

$('#nacionalidade_id').val('45'); 
$('#nacionalidade_id').trigger('change');

См. Select2 документы в https://select2.org/programmatic-control/add-select-clear-items#selecting-options

...