Good, as I do so that the values of the array that returns me are loaded in the inputs, I see that the Select function of the autocomplete has a problem, console.log(ui.item)
appears Object {label: "22222", value: "22222"}
, when I want to send me {id:...,codigo:...,descripcion:...}
What would be my mistake? thank you very much.
Éste es mi controlador:
public function getarticulos() {
$q = trim($this->input->get('term'));
$productoresult = $this->articulo_model->find($q);
$result = array();
foreach ($productoresult as $i =>$articulo) {
$result[$i]['id'] = $articulo->id;
$result[$i]['codigo'] = $articulo->codigo;
$result[$i]['descripcion'] = $articulo->descripcion;
$result[$i]['precioactual'] = $articulo->precioactual;
}
echo json_encode($result);
}
Éste es el modelo:
public function find($q){
return $this->db->query("select * from articulo where codigo like '%$q%'")->result();
}
VISTA (aclaro q de esta manera me funciona el autocompletar, de otras maneras ya intente)
$(function() {
var cache = {};
$( "#txtcodigo" ).autocomplete({
minLength: 2,
source: function( request, response ) {
var menus = new Array();
var term = request.term;
if ( term in cache ) {
response( cache[ term ] );
return;
}
$.getJSON( "<?php echo base_url() ?>index.php/articulo/getarticulos", request, function( result, status, xhr ) {
cache[ term ] = result;
var count = result.length;
console.log(result);
console.log(count);
for (var i = 0; i < count; i++) {
menus[i] = { codigo: result[i].codigo, id: result[i].id, descripcion:result[i].descripcion};
console.log(menus[i]);
cache[ term ][i] = result[i].codigo;
}
response(result);
});
},
select: function( event, ui ) {
$("#txtcodigo").val(ui.item.codigo);
$("#txtid").val(ui.item.id);
return false;
}
});
});
<label for="txtcodigo">Codigo: </label>
<input id="txtcodigo">
<label for="txtid">id: </label>
<input id="txtid">