Comunidad de diseño web y desarrollo en internet online

Buscador de palabras con sugerencia en Flash

El tip que voy a explicar es una ampliación de este otro: buscador por similitud. En esta ocasión le vamos a añadir una sugerencia de búsqueda para que el usuario no necesite introducir la palabra completa al buscar algo.

Al igual que en el buscador, vamos a emplear provincias argentinas. Comiencen a escribir y presionen Enter:



Si no conocen ninguna, prueben con Corrientes o Santa Cruz, ya que muestran más de una sugerencia a medida que agregamos letras.

Las sugerencias las tenemos almacenadas en un Array que contendrá todas las palabras posibles (también las podemos tomar de cualquier string con un split o recuperarlas desde php, xml, un txt, etc.).

Luego, usamos una función que nos devuelva una palabra que comience igual que la introducida (hasta el momento) por el usuario.

El código que empleé podría ser este:

Código :

buscar = function (cadena:String, biblioteca:Array):String {
   var miArray = new Array ();
   var confirmacion = new Array ();
   //
   if (cadena == "") {
      return "nada";
   } else {
      miArray = cadena.split ("");
   }
   //
   for (var i = 0; i < biblioteca.length; i++) {
      confirmacion = desacentuar (biblioteca[i]).split ("").slice (0, miArray.length);
      //
      if (desacentuar (miArray.toString ()).toLowerCase () == confirmacion.toString ().toLowerCase ()) {
         return biblioteca[i].toString ();
      }
      //                                                                        
   }
   return "nada";
   //
};

De todos modos, hay algo que salta inmediatamente a la vista, este código, por si solo no nos sirve, emplea una función (desacentuar) que tenemos que definir en otro lado.

La función en cuestión quita los acentos (agudos, graves y circunflexos) y las diéresis de las vocales. El código es éste:

Código :

desacentuar = function (cadena:String) {
   var miPalabra = new Array ();
   miPalabra = cadena.toLowerCase ().split ("");
   //
   for (var i = 0; i < miPalabra.length; i++) {
      switch (miPalabra[i]) {
      case "á" : case "ä" : case "à" : case "â" :
         miPalabra[i] = "a";
         break;
      case "é" : case "ë" : case "è" : case "ê" :
         miPalabra[i] = "e";
         break;
      case "í" : case "ï" : case "ì" : case "î" :
         miPalabra[i] = "i";
         break;
      case "ó" : case "ö" : case "ò" : case "ô" :
         miPalabra[i] = "o";
         break;
      case "ú" : case "ü" : case "ù" : case "û" :
         miPalabra[i] = "u";
         break;
      default :
         miPalabra[i] = miPalabra[i];
      }
   }
   return miPalabra.join ("");
};

Visto el código les dejo el archivo .fla del ejemplo.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate