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.
Esta bueno. Estaria bueno completarlo con algunas funcionalidades mas que las que mostrar el nombre completo, como por ejemplo que esa sugerencia la puedas seleccionar y se autocomplete el texto, o que aparezcan multiples sugerencias en caso de coincidir. Un caso seria cuando pones 'Sa' aparezcan todas las que empiean con 'Sa' al mismo tiempo y se vayan borrando a medida que vas completando la palabra. Por:PabloHdS
Eso se puede agregar fácilmente, por eso esto no es un componente ni nada, la idea era mostrar cómo se podía hacer. Por:HernanRivas
hola...bueno no see ni que es esto pero bueh......loko....che...mik y cami o ttkkmm!! Por:sofipezzoli_blog
y como se complataria el codigo para cuando haga la busqueda salga un boton y lo envie al origen de la busqueda??? eso puede buscar archivos en una carpeta raiz??? o que lo envie a la escena donde esta la busqueda dentro del flash Por:ricardo_blog
alguien sabe como buscar palabras metiendo letras??
gracias Por:felix-blog
heidita que ases Por:heidi moronta fermin-bl
heidita que ases soy yo nati Por:heidi moronta fermin-blog