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.
Por july el 22 de Mayo de 2007
Por Ancolmi el 23 de Mayo de 2007
Saludos An
Por .:ZERO:. el 23 de Mayo de 2007
Por HernanRivas el 24 de Mayo de 2007
Saludos!!
Por claudia el 22 de Agosto de 2007
Por HernanRivas el 24 de Agosto de 2007
Por sofipezzoli el 17 de Noviembre de 2007
Por ricardo el 14 de Marzo de 2008
Por felix el 01 de Septiembre de 2008
gracias
Por heidi moronta ferm el 13 de Noviembre de 2008
Por heidi moronta fermin el 17 de Diciembre de 2008
Por paula el 06 de Marzo de 2009
CRISPADA??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
'''
'''''''
Por alvaro fuentes el 09 de Marzo de 2009
gracias
Por alex el 30 de Agosto de 2009
Por Lets el 16 de Diciembre de 2009
Mi pregunta es la siguiente:
¿como puedo hacer si en el caso de encontrar la palabra como en un diccionario por ejemplo la respuesta es la definicion en vez de "usted eligio:catamarca" por asi decirlo?
Por Lets el 28 de Diciembre de 2009
pero la cuestion es que al poner un numero importante de sugerencias (1500) es muuuuuuuuuuuuuuy lento..
sugerencia?
Por susanita el 04 de Septiembre de 2010