Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Autocompletar con JQuery

Estas en el tema de Autocompletar con JQuery en el foro de Jquery en Foros del Web. Saludos, Estoy intentando hacer un autocompletar en jquery con php. El ejemplo lo he cogido de una pagina web y me ha venido muy bien. ...
  #1 (permalink)  
Antiguo 20/12/2015, 18:33
 
Fecha de Ingreso: diciembre-2015
Mensajes: 8
Antigüedad: 8 años, 11 meses
Puntos: 0
Autocompletar con JQuery

Saludos, Estoy intentando hacer un autocompletar en jquery con php. El ejemplo lo he cogido de una pagina web y me ha venido muy bien. Me funciona todo genial excepto que el primer caracter que pongo en el input no me lo coge hasta que pongo el siguiente.

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>';
}
?>
  #2 (permalink)  
Antiguo 20/12/2015, 22:25
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Autocompletar con JQuery

Bienvenido a Foros del Web.

Lo que sucede es que el método .keypress() se basa en el evento del mismo nombre, el cual se dispara cuando se ha pulsado una tecla. En dicho instante, todavía no se ha ingresado el dato en la caja de texto, por lo que cuando se toma el valor del mismo al inicio, está en blanco.

Debes de utilizar el método .keyup() el cual dispara el evento del mismo nombre que se produce cuando la tecla ya se encuentra en su posición original después de haber sido pulsada, por lo que el dato ya se encuentra insertado en la caja de texto.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 21/12/2015, 05:00
 
Fecha de Ingreso: diciembre-2015
Mensajes: 8
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Autocompletar con JQuery

Hey muchas gracias, me sirvio tu respuesta, ya me funciona.

Se me olvido comentaros que hay algo que no me termina de funcionar y es que en las sugerencias que aparecen abajo al darle click me deberia rellenar el input con esa informacion y despues hacerme el fadeout de las sugerencias.

El fadeout me lo hace al clickar pero no me termina de rellenar el input con esa informacion

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:06.