Foros del Web » Programando para Internet » Jquery »

Codigo Autocompletado

Estas en el tema de Codigo Autocompletado en el foro de Jquery en Foros del Web. Hola a todos los jqueros hehehe, me preguntaba si me podria ayudar con esto. estoy tratando de hacer que cuando uno escriba "jQu" deberia salir ...
  #1 (permalink)  
Antiguo 15/11/2015, 20:14
 
Fecha de Ingreso: junio-2012
Mensajes: 18
Antigüedad: 12 años, 5 meses
Puntos: 0
Exclamación Codigo Autocompletado

Hola a todos los jqueros hehehe, me preguntaba si me podria ayudar con esto. estoy tratando de hacer que cuando uno escriba "jQu" deberia salir desplegado para seleccionar "jQuery" y que cuando uno lo seleccione se quede en el primero input y que en un segundo input salga "23". espero me puedan ayudar, este es el codigo que tengo

Código Javascript:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html>
  3.     <head>
  4.         <title>jQuery Autocompletar con Ajax</title>
  5.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  6.         <meta content="Plugin Gratis para autocompletar un input con jQuery y Ajax" name="description" />
  7.         <script src="js/jquery-1.4.2.min.js"></script>
  8.         <script src="js/autocomplete.jquery.js"></script>
  9.         <link type="text/css" rel="stylesheet" href="css/autocomplete.css"></link>
  10.         <script>
  11.             $(document).ready(function(){
  12.                 /* Una vez que se cargo la pagina , llamo a todos los autocompletes y
  13.                  * los inicializo */
  14.                 $('.autocomplete').autocomplete();
  15.             });
  16.         </script>
  17.     </head>
  18.     <body>
  19.         <!-- Código del Autocompletar , todo el código html necesario estra entre estos comentarios -->
  20.         <div class="autocomplete">
  21.             <label style="display:block;">Seleccione una categoría:</label>
  22.             <input  type="text" value="" data-source="search.php?search=" />
  23.             <input  type="text" value="" />
  24.         </div>
  25.         <!-- fin de codigo autocompletar -->
  26.     </body>
  27. </html>

Código Javascript:
Ver original
  1. <?php
  2.  
  3. // limpio la palabra que se busca
  4. $search= trim($_GET['search']);
  5.  
  6. // la busco
  7. $result= search($search);
  8.  
  9. // seteo la cabecera como json
  10. header('Content-type: application/json; charset=utf-8');
  11.  
  12. //imprimo el resultado como un json
  13. echo json_encode($result);
  14.  
  15.  
  16. function search($searchWord)
  17. {
  18.     $tmpArray=array();
  19.     /**
  20.      * Obtengo los datos almacenados en el array
  21.      */
  22.     $data=getData();
  23.    
  24.  
  25.     foreach($data as $word)
  26.     {
  27.         // obtengo el tamaño de la palabra que se busca.
  28.         $searchWordSize=strlen($searchWord);
  29.         // corto la palabra que viene del array y la dejo del mismo tamaño que
  30.         // la que se busca de manera de poder comparar.
  31.         $tmpWord=substr($word, 0,$searchWordSize);
  32.         // si son iguales la guardo para devolverla
  33.         if (strtolower($tmpWord) == strtolower($searchWord))
  34.         {
  35.             // guardo la palabra original sin cortar.
  36.             $tmpArray[]=$word;
  37.         }
  38.     }
  39.    
  40.     return $tmpArray;
  41. }
  42.  
  43. function getData()
  44. {
  45.     $result=array();
  46.     $result[]='jQuery';
  47.     $result[]='Javascript';
  48.     $result[]='Imagenes';
  49.     $result[]='Galerias';
  50.     $result[]='Fotos';
  51.     $result[]='Efectos';
  52.     $result[]='Menus';
  53.     $result[]='Acordeon';
  54.     $result[]='Autocompletar';
  55.     $result[]='Sliders';
  56.     $result[]='PopUps';
  57.     $result[]='Clocks';
  58.     $result[]='Autoload';
  59.     $result[]='HTML5';
  60.     $result[]='CSS3';
  61.     $result[]='LightBox';
  62.     $result[]='Analytics';
  63.     $result[]='Analizador';
  64.    
  65.     asort($result);
  66.     return $result;
  67. }

Código Javascript:
Ver original
  1. /**
  2.  * Plugin  : Autocompletar con jQuery
  3.  *   Autor : Lucas Forchino
  4.  * WebSite : http://www.tutorialjquery.com
  5.  * version : 1.0
  6.  * Licencia: Pueden usar libremenete este código siempre y cuando no sea para
  7.  *           publicarlo como ejemplo de autocompletar en otro sitio.
  8.  */
  9. (function($){
  10.     // Creo la funcion en el prototype de jQuery de manera de integrarla
  11.     $.fn.autocomplete= function ()
  12.     {
  13.         //puede haber mas de un autocomplete que cargar por eso esto los levanta a todos
  14.         $(this).each(function(){
  15.              
  16.              
  17.             // aplico los estilos a los elementos elegidos
  18.             $(this).addClass('autocomplete-jquery-aBox');
  19.              
  20.              
  21.             // guardo en una variable una nueva funcion que asigna el texto del
  22.             // link que paso en that al input donde escribimos.
  23.             // esto seleccionaria el link del cuadro autocompletar
  24.             var selectItem = function(that)
  25.             {
  26.                 // partiendo del link busco el input y le asigno el valor del link
  27.                 $(that).parent().parent().find('input').val($(that).html());
  28.                 // remuevo el cuadro de autocompletar, se supone si ya seleccionaste
  29.                 // un valor no se necesita mas
  30.                 $(that).parent().remove();
  31.                                      
  32.             }
  33.             // busco el input y le asigno un evento al presionar una tecla
  34.             $(this).find('input').bind('keyup',function(event){
  35.                 var input=$(this);
  36.                  
  37.                 // codigo de la tecla persionada
  38.                 var code=event.keyCode;
  39.                 // si es Enter => seleccionar el link marcado
  40.                 if (code==13 && $('.autocomplete-jquery-mark').size()>0)
  41.                 {
  42.                     var element=$('.autocomplete-jquery-mark').get(0);
  43.                     selectItem(element);
  44.                 }
  45.                 // si son las flechas => moverse por los links
  46.                 else if(code==40 || code ==38)
  47.                 {
  48.                     elements =$('.autocomplete-jquery-results').find('a');
  49.                     var mark =0;
  50.                     if ($('.autocomplete-jquery-mark').size()>0){
  51.                         mark=$('.autocomplete-jquery-mark').attr('data-id');
  52.                         $('.autocomplete-jquery-mark').removeClass('autocomplete-jquery-mark');
  53.                              
  54.                         if (code==38){
  55.                             mark --;
  56.                         }else{
  57.                             mark ++;
  58.                         }
  59.                              
  60.                         if (mark > elements.size()){
  61.                             mark=0;
  62.                         }else if (mark < 0){
  63.                             mark=elements.size();
  64.                         }
  65.                              
  66.                              
  67.                     }
  68.                     elements.each(function(){
  69.                         if ($(this).attr('data-id')==mark)
  70.                         {
  71.                             $(this).addClass('autocomplete-jquery-mark');
  72.                         }
  73.                     });                            
  74.                              
  75.                 }
  76.                  
  77.                 // si es una letra o caracter, ejecutar el autocompletar
  78.                 // con este filtro solo toma caracteres para la busqueda
  79.                 else if((code>47 && code<91)||(code>96 && code<123) || code ==8 )
  80.                 {
  81.                     // si presiono me fijo si hay resultados para lo que tengo
  82.                     // tomo la url
  83.                     var url = input.attr('data-source');
  84.                     // tomo el valor del combo actualmente
  85.                     var value = input.val();
  86.                     url+=value;
  87.                     //busco en el server la info
  88.                     $.getJSON(url,{}, function(data){
  89.                         // si encontro algo
  90.                         // creo un cuadro debajo del input con los resultados
  91.                         input.parent().find('.autocomplete-jquery-results').remove();
  92.                         var left = input.position().left;
  93.                         var width= input.width();
  94.                         var result=$('<div>');
  95.                         // le damos algunos estilos al combo
  96.                         result.css({'width':width});
  97.                         result.css({'left':left});
  98.                          
  99.                          
  100.                         result.addClass('autocomplete-jquery-results');
  101.                         for(index in data)
  102.                         {
  103.                             //agrego un link por resultado
  104.                             if(data.hasOwnProperty(index))
  105.                                 {
  106.                                     var a = $('<a>');
  107.                                     a.html(data[index]);
  108.                                     a.addClass('autocomplete-jquery-item');
  109.                                     var widthFixed=width - 3;
  110.                                     a.css({'width':widthFixed});
  111.                                     a.attr('href',"#");
  112.  
  113.                                     a.click(function(){
  114.                                         // funcion que pone el texto en input
  115.                                         selectItem(this);
  116.                                     })
  117.                                     a.attr('data-id',index);
  118.                                     $(result).append(a);
  119.                                 }
  120.                         }
  121.                         if (data.length>0)
  122.                         {
  123.                             input.parent().append(result);
  124.                             result.fadeIn('slow');
  125.                         }
  126.                     });
  127.                 }
  128.             });
  129.         });
  130.     }
  131. })(jQuery);

Última edición por Chuckyz0r; 16/11/2015 a las 05:21
  #2 (permalink)  
Antiguo 28/11/2015, 21:18
 
Fecha de Ingreso: junio-2012
Mensajes: 18
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Codigo Autocompletado

Alguien que me pueda ayudar con esto pls
  #3 (permalink)  
Antiguo 29/11/2015, 00:02
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Codigo Autocompletado

Te recomiendo utilizar el widget autocomplete de jQuery UI. Hace un tiempo hice un ejemplo con dicho widget en el cual lograba tomar hasta cinco datos a partir de una búsqueda. Pasa a verlo aquí.

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

Etiquetas: autocompletado
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 19:16.