Marcar o item como selected no Select2 com ajax
Boa tarde pessoal.
Estou terminando um site para imobiliária, no qual faz parte da ferramenta de busca o Select2.
Está tudo funcionando.
O problema é que, ao selecionar um imóvel, seria necessário que os campos que o cliente escolheu, ficassem com o selected setados.
Esse seria um dos scritps:
O que faz o ajax:
/************* Procurar cidade *************/
//$('#cidade').select2('data', {id: '5256', text: 'cidade selecionada...'});
$( "#cidade" ).select2({
ajax: {
url: "<?php echo $dir_base; ?>php/procurar_cidades_pesquisa.php",
dataType: 'json',
delay: 250,
data: function (params) {
return {
finalidade_id: $("#finalidade").val(),
tipo_imovel_id: $("#tipo_imovel").val(),
q: params.term // search term
};
},
processResults: function (data) {
// parse the results into the format expected by Select2.
// since we are using custom formatting functions we do not need to
// alter the remote JSON data
return {
results: data
};
},
cache: true
},
language: {
noResults: function (params) {
return "Selecione a finalidade";
}
}
});
$("#bairro").prop("disabled", true);
$("#cidade").on("change", function () {
if($(this).val().length == 0) {
$("#bairro").prop("disabled", true);
}else{
$("#bairro").prop("disabled", false);
}
$("#bairro").empty().trigger('change')
});
/*************** Procurar cidade ***************/
E o php que faz a busca do db:
<?php
/******* Conexão com o bando de dados *******/
include "../Conexao/config.php";
mysqli_select_db($config, $database_config);
mysqli_set_charset($config,"utf8");
/******* Conexão com o bando de dados *******/
$finalidade_id = strip_tags(trim($_GET['finalidade_id']));
$tipo_imovel_id = @strip_tags(trim($_GET['tipo_imovel_id']));
$cidade_sel_url = @strip_tags(trim($_GET['cidade_sel_url']));
$search = @strip_tags(trim($_GET['q']));
if(empty($finalidade_id)){
$sql_json = mysqli_query($config, "SELECT imv.cidade, cid.nome FROM tb_imovel imv LEFT JOIN tb_cidades AS cid ON (imv.cidade = cid.id) WHERE cid.nome LIKE '".$search."%' AND imv.finalidade = '1' GROUP BY imv.cidade") or die(mysqli_error($config));
}elseif(empty($tipo_imovel_id)){
$sql_json = mysqli_query($config, "SELECT imv.cidade, cid.nome FROM tb_imovel imv LEFT JOIN tb_cidades AS cid ON (imv.cidade = cid.id) WHERE cid.nome LIKE '".$search."%' AND imv.finalidade = '".$finalidade_id."' GROUP BY imv.cidade") or die(mysqli_error($config));
}else{
$sql_json = mysqli_query($config, "SELECT imv.cidade, cid.nome FROM tb_imovel imv LEFT JOIN tb_cidades AS cid ON (imv.cidade = cid.id) WHERE cid.nome LIKE '".$search."%' AND imv.finalidade = '".$finalidade_id."' AND tipo = '".$tipo_imovel_id."' GROUP BY imv.cidade") or die(mysqli_error($config));
}
$return_arr = array();
if(@mysqli_num_rows($sql_json) <= '0'){
echo "";
}else{
while($r_sql_json = mysqli_fetch_array($sql_json)){
$row_array['id'] = $r_sql_json['cidade'];
$row_array['text'] = $r_sql_json['nome'];
array_push($return_arr,$row_array);
}
}
echo json_encode($return_arr);
?>
Encontrei essa linha na documentação:
//$('#cidade').select2('data', {id: '5256', text: 'cidade selecionada...'});
Mas eu coloco e a cidade selecionada não fica setada com seleted.
São seis campos que ocorrem isso, todos parecidos com este.
A instrução acima está correta e eu não estou sabendo fazer ou teria algum outro modo de fazer isso?
Obrigado!Discussão (0)
Carregando comentários...