Problemas con Jquery ui autocomplete

100 views
Skip to first unread message

Carlos Enrique Ramirez Garcia

unread,
Apr 5, 2014, 12:10:07 PM4/5/14
to gtug...@googlegroups.com
 <script>
                  $(function(){
                    var autocompletar = new Array();
                    <?php //Esto es un poco de php para obtener lo que necesitamos
                     for($p = 0;$p < count($questarr); $p++){ //usamos count para saber cuantos elementos hay ?>
                       autocompletar.push('<?php echo $questarr[$p]; ?>');
                     <?php } ?>
                     $("#buscar").autocomplete({ //Usamos el ID de la caja de texto donde lo queremos
                       source: autocompletar //Le decimos que nuestra fuente es el arreglo
                     });
                  });
</script>
<input type="text" name="RazonSocial" placeholder="Teclee az&oacute;n social para consultar otro cliente" style="margin:30px 15px 0px 0px; width:400px;" id="buscar">


funciona excelente, me da los resultados de la busqueda de sql en php, el detalle es el siguiente, cuando se selecciono un valor, el resultado se pone en el input text, lo que yo deseo es que cuando seleccione el valor, abra otro php, mandando el resultado de la busqueda, o mejor aun, que envie el id relacionado al valor de busqueda, un ejemplo:

Muestra nombres:

108    Juan Perez
110    Luis Mercado
114    Pedro Cardenas
115    Emmanuel Peña
117    Jaime Nuño


Si selecciono Pedro, en el input text, se pondra Pedro Cardenas(dejo entendido que el array, solo tiene los nombres y no los id), entonces me gustaria que se enviara Pedro Cardenas, o mejor aun que se envie el ID, el ejemplo lo tome de http://tarjuccino.com/tutoriales/programacion-web/autocompletar-con-jquery-php-y-mysql/ aqui aprendi ahcer eso, pero necesito saber exactamente lo que necesito.

Espero me puedan ayudar, gracias.

Jorge Cordero

unread,
Apr 5, 2014, 2:29:56 PM4/5/14
to gtug...@googlegroups.com
Mirando rapidito te puedo decir que el SELECT acepta un valor numérico oculto y un string para mostrar al usuario.
Por lo tanto, es posible escribir "Pedro Cardenas" y obtener el valor 114 
Tu datasource debe contener un array así  [{"value":114,"label":"Pedro Cardenas"},{...},...]
Y al crear el objeto de autocomplete agregas un handler asi:
.autocomplete({
        'source': ... ,
        'select': function(event, ui) {
                event.preventDefault();
                ac.val(ui.item.label);
                var id = ac.attr("id");
                $('#codigo_cliente').val(ui.item.value);
                //Cualquier cosa que quieras que pase cuando se elige un cliente lo invocas desde aquí 
        }
});

Jorge Cordero

unread,
Apr 5, 2014, 2:32:54 PM4/5/14
to gtug...@googlegroups.com
Me falto aclarar que en el codigo que te pase, la variable "ac" es el objeto del autocomplete, o sea:

var ac = $("#id_del_campo");

ac.autocomplete({...});



El sábado, 5 de abril de 2014 13:10:07 UTC-3, Carlos Enrique Ramirez Garcia escribió:

Carlos Enrique Ramirez Garcia

unread,
Apr 9, 2014, 4:08:28 PM4/9/14
to gtug...@googlegroups.com

Muchas gracias. Funciona yme saco del apuro. 8

> --
> Has recibido este mensaje porque estás suscrito a un tema del grupo "GTUG Buenos Aires | Google Developers Group" de Grupos de Google.
> Para anular la suscripción a este tema, visita https://groups.google.com/d/topic/gtug-bsas/Cc1slYY8K6Y/unsubscribe.
> Para anular la suscripción a este grupo y a todos sus temas, envía un correo electrónico a gtug-bsas+...@googlegroups.com.
> Para acceder a más opciones, visita https://groups.google.com/d/optout.

Juan Simon

unread,
Apr 10, 2014, 12:34:03 AM4/10/14
to gtug...@googlegroups.com
no me queda muy claro si es una duda existente o no... Por las dudas paso unos detalles que veo:

Esto:
 var autocompletar = new Array();
                     <?php //Esto es un poco de php para obtener lo que necesitamos
                      for($p = 0;$p < count($questarr); $p++){ //usamos count para saber cuantos elementos hay ?>
                        autocompletar.push('<?php echo $questarr[$p]; ?>');
                     <?php } ?>


se puede simplificar de la sisguiente manera:

var autocompletar = <?php echo json_encode($questarr); ?>;//JSON (JavaScript Object Notation) es la manera de representar objetos en javascript, y en javascript un Array es un objeto.


Ahora, para poder usar el ID en javascript, tenemos que tener eso disponible, para lo que tenemos que modificar lo siguiente:

  while($palabras = mysql_fetch_array($res)){
    array_push($arreglo_php, array("label" => $palabras["nombre"], "value" => $palabras["id"]));
  }

y mas abajo:

                      $("#buscar").autocomplete({ //Usamos el ID de la caja de texto donde lo queremos
                        source: autocompletar //Le decimos que nuestra fuente es el arreglo
                      });

por

 $( "#buscar" ).autocomplete({
        source: autocompletar,
        select: function( event, ui ) {
            $("#buscar").val(ui.item.label);
            alert(ui.item.value );
            return false;
      }
    });

en lugar de alert(ui.item.value); puedes hacer lo que quieras.


Por si hace falta, aquí dejo un ejemplo funcionando:



Saludos,

Juan S. Simon


--
Has recibido este mensaje porque estás suscrito al grupo "GTUG Buenos Aires | Google Developers Group" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a gtug-bsas+...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages