首页 > 解决方案 > 使用 jquery 更改 ajax select2 值

问题描述

我有一个选择字段:

<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但我无法适应我的代码。任何帮助。

标签: jqueryjquery-select2

解决方案


尝试

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

请参阅https://select2.org/programmatic-control/add-select-clear-items#selecting-options上的 select2 文档


推荐阅读