使用jQuery更改ajax select2值

时间:2019-02-10 18:01:40

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

2 个答案:

答案 0 :(得分:1)

尝试

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

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

上的select2文档

答案 1 :(得分:0)

解决方案是创建一个新的otpion:

var data = {
    id: 45,
    text: 'TEXT DESCRIPTION'
};
var newOption = new Option(data.text, data.id, false, false);
$('#nacionalidade_id').append(newOption).trigger('change');