Pongamos que en el input pongo 25, haciendo referencia al dni. en el alert al introducir el 2 me muestra en blanco, y cuando pongo el 5 me muestra el 2, y asi sucesivamente. La idea es que cuando se pulse la primera cifra ya lo busque en la base de datos y no espere a que se introduzca la siguiente:
Código:
$(document).ready(function() { //Al escribr dentro del input con id="service" $('#service').keypress(function(){ //Obtenemos el value del input var service = $(this).val(); alert(service); var dataString = 'service='+service; //Le pasamos el valor del input al ajax $.ajax({ type: "POST", url: "autocomplete.php", data: dataString, success: function(data) { //Escribimos las sugerencias que nos manda la consulta $('#suggestions').fadeIn(1000).html(data); //Al hacer click en algua de las sugerencias $('.suggest-element').on('click', function(){ //Obtenemos la id unica de la sugerencia pulsada var id = $(this).attr('id'); //Editamos el valor del input con data de la sugerencia pulsada $('#service').val($('#'+id).attr('data')); //Hacemos desaparecer el resto de sugerencias $('#suggestions').fadeOut(1000); }); } }); }); });
Código PHP:
<?php
header( 'Content-type: text/html; charset=iso-8859-1' );
include('con_bd.php');
$search = $_POST['service'];
$query_services = "SELECT nombre, apellidos FROM clientes WHERE dni like '" . $search . "%'";
echo $query_services;
$result = $con->query($query_services);
while ( $row = $result->fetch_assoc() ) {
echo '<div class="suggest-element"><a data="'.$row['apellidos'].'" id="'.$row['nombre'].'">'.utf8_encode($row['apellidos']).'</a></div>';
}
?>