Tema: autocomplete
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/02/2012, 00:24
Avatar de rigobcastro
rigobcastro
 
Fecha de Ingreso: febrero-2012
Ubicación: Lejanías
Mensajes: 69
Antigüedad: 12 años, 8 meses
Puntos: 21
Respuesta: autocomplete

Bueno analice rapidamente y mire los docs de ese plugin y no encontre callbacks para poder crear los datos a enviar. En cuestión de usabilidad y flexibilidad, te recomiendo el autocomplete de jQueryUI. http://jqueryui.com/demos/autocomplete/

En una de sus opciones, puedes crear un callback para usar los datos retornados a tu antojo. Puedes usar JSON para retornar tanto el nombre como el ID que necesitas, y proseguido a esto alojar el ID en un input tipo"hidden" y el nombre en el input de autocompletar como está normalmente.

Algo de codigo para esto. Con la opción "select" puedes hacer un callback para cuando los datos lleguen desde el source.

Código HTML:
$( "#nombre" ).autocomplete( {
    // Funcion que ejecuta el llamado de datos via JSON
    source: function( request, response ) {
        $.ajax({
            url: "url del source",
            dataType: "JSON",
            // Datos que se enviaran
            data: {
                nombre: request.term // Nombre que se inserta en el autocomplete
            },
            // Funcion cuando retornen los datos
            success: function( data ) {
                response( $.map( data, function( item ) {
                    return {
                        // Nombres que se mostrará en el desplegable
                        label: item.nombre,
                        // ID retornados y necesitados
                        value: item.ID
                    }
                }));
            }
        });
    },
    // Funcion que se ejecuta cuando se hace click en el menu desplegable con los resultados
    select: function( event, ui ) {
        // Cuando hace click en alguno de los nombres del desplegable, que se actualice el ID en el input hidden
        return $("#inputID").val(ui.item.ID);       
    }
});
Y pues en el body tendrás un input hidden con el ID "#inputID"

Código HTML:
<input id="inputID" type="hidden" /> 
Esto se me ocurre y así como algo fácil. Si tienes experiencia en JSON y jQuery, todo te quedará mucho más fácil. Al principio se ve algo muy tedioso, pero la API de jQueryUI es muy amplia y flexible, útil para hacer callbacks a nuestro antojo.

Lee la documentación completa y detalla los ejemplos, pero recuerda estas dos opciones que te indique para hacer el trabajo de parsear los datos como necesitas.

Saludos!