Buenos Días:
Tengo un HTML con el siguiente INPUT de un Nombre:
Código HTML:
Ver original <input type="text" class="form-control" id="nomref" name="nomref" placeholder="Referencia" value="<?php echo (isset($dato['nomref']) ? $dato['nomref'] : '') ?>"/>
<div id="suggestions_ref"></div>
El JQuery:
Código Javascript
:
Ver original$(document).ready(function () {
//Al escribr dentro del input con id="nomref"
$('#nomref').keypress(function () {
//Obtenemos el value del input
var nomref = $(this).val();
var dataString = 'nomref=' + nomref;
//Le pasamos el valor del input al ajax
$.ajax({
type: "POST",
url: "index.php?ctl=autocompleta_referencias",
data: dataString,
success: function (data) {
//Escribimos las sugerencias que nos manda la consulta
$('#suggestions_ref').fadeIn(100).html(data);
//Al hacer click en algua de las sugerencias
$('.suggest_ref-element a').live('click', function(){
$('.suggest_ref-element a').click(function () {
//Obtenemos la id unica de la sugerencia pulsada
var id = $(this).attr('id');
var infref = $(this).attr('infref');
//Editamos el valor del input con data de la sugerencia pulsada
$('#nomref').val($('#' + id).attr('data'));
$('#idreferencia').val($('#' + id).attr('id'));
$('#infref').val($('#' + id).attr('infref'));
//Hacemos desaparecer el resto de sugerencias
$('#suggestions_ref').fadeOut(100);
});
});
}
});
});
});
El controlador:
Código PHP:
Ver original<?php
public function autocompleta_referencias() {
$controlador_principal = new Controlador();
$controlador_principal->Incluir('Modelo_Referencias');
$busco = $_POST['nomref'];
$modelo = new Modelo_Referencias();
$sql = "select ref.idreferencia id,rec.nombre nombre, concat('(umc:',umc.nombre,' ',tem.nombre,' ',rec.idseccion,'/',rec.numero,' art:',ref.articulo_proveedor,')') infref from referencias ref join referencias_cabeceras rec on rec.idreferencia_cabecera=ref.idreferencia_cabecera join unidadesmedida umc on ref.idunidadmedida_compra=umc.idunidadmedida join temporadas tem on rec.idtemporada=tem.idtemporada where rec.numero=" . substr($busco, 2, 5) . " and rec.idseccion=" . substr($busco, 0, 2) . " ORDER BY rec.nombre DESC limit 50"; } else {
$sql = "select ref.idreferencia id,rec.nombre nombre, concat('(umc:',umc.nombre,' ',tem.nombre,' ',rec.idseccion,'/',rec.numero,' art:',ref.articulo_proveedor,')') infref from referencias ref join referencias_cabeceras rec on rec.idreferencia_cabecera=ref.idreferencia_cabecera join unidadesmedida umc on ref.idunidadmedida_compra=umc.idunidadmedida join temporadas tem on rec.idtemporada=tem.idtemporada where rec.nombre like '" . $busco . "%' ORDER BY rec.nombre DESC limit 50";
}
$params = array('seleccion' => $modelo->ejecutar($sql));
foreach ($params['seleccion'] as $row) {
?>
<div class="suggest_ref-element">
<a data="
<?php echo utf8_encode(trim($row['nombre'])); ?>" id="
<?php echo $row['id']; ?>" infref="
<?php echo utf8_encode(trim($row['infref'])); ?>" </a>
<?php echo $row['nombre'] . ' ' . $row['infref']; ?>
</div>
<?php
}
}
}
El problema es que al controlador siempre llega un caracter menos, ejemplo si escribo "PANTALON" llega "PANTALO" y al borrar el campo hacia atras no ejecuta el controlador.
Muchas Gracias a quien pueda ayudarnos.