A continuación mostraremos cómo utilizar un script ya creado para hacer dicho campo de autocompletar. Es decir, no explicaremos cómo hacerlo por nosotros mismos, sino cómo utilizar un desarrollo ya listo, que nos ahorrará mucho trabajo. Utilizaremos el plugin autocomplete de las librerías jQuery UI, que la verdad es un componente bastante potente que podremos configurar perfectamente para adaptarlo a cualquier necesidad.
Ahora veremos como en una corta serie de pasos elementales, podremos tener nuestro propio componente de autocompletado.
Todos los scripts y la hoja de estilos los obtenemos cuando descargamos nuestro paquete de jQuery UI. El código para incluirlo todo será algo como esto.
<link type="text/css" href="css/ui-darkness/jquery-ui-1.8.6.custom.css" rel="Stylesheet" />
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.6.custom.min.js"></script>
<input type="text" size="20" id="autoc1">
El identificador (atributo ID) será el que tú desees. Simplemente acuérdate de él, porque luego tendrás que utilizarlo en tu script.
Este array se utiliza cuando queremos que las opciones para autocompletado del campo estén en "local", es decir, escritas en la propia página que tiene el script. Sin embargo, esta es sólo una opción de configuración y la hemos elegido ahora por ser la más simple. Más adelante explicaremos cómo obtener esas opciones de forma remota.
Vamos a crear en este caso un array con las provincias de España, que tendría esta forma.
var arrayValoresAutocompletar = [
"Álava",
"Albacete",
"Alicante",
"..."
];
$("#autoc1").autocomplete({
source: arrayValoresAutocompletar
})
Con esta sentencia invocamos al plugin sobre el campo de texto, al que hemos accedido por su identificador. Además, debemos indicar como opción en el plugin el lugar desde donde se deben obtener las distintas opciones para autocompletar.
Si lo deseas, puedes ver el campo autocompletar que hemos creado. Para ver la funcionalidad en marcha debes escribir cualquier letra en el campo o un conjunto de letras como "alm" y te mostrará diferentes sugerencias de provincias de España para que elijas la que desees.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"
>
<html lang="en">
<head>
<title>Probando autocomplete</title>
<link type="text/css" href="css/ui-darkness/jquery-ui-1.8.6.custom.css" rel="Stylesheet" />
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.6.custom.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var arrayValoresAutocompletar = [
"Álava",
"Albacete",
"Alicante",
"Almería",
"Asturias",
"Avila",
"Badajoz",
"Barcelona",
"Burgos",
"Cáceres",
"Cádiz",
"Cantabria",
"Castellón",
"Ceuta",
"Ciudad Real",
"Córdoba",
"Cuenca",
"Gerona",
"Granada",
"Guadalajara",
"Guipúzcoa",
"Huelva",
"Huesca",
"Islas Baleares",
"Jaén",
"La Coruña",
"La Rioja",
"Las Palmas",
"León",
"Lérida",
"Lugo",
"Madrid",
"Málaga",
"Melilla",
"Murcia",
"Navarra",
"Orense",
"Palencia",
"Pontevedra",
"Salamanca",
"Segovia",
"Sevilla",
"Soria",
"Tarragona",
"Tenerife",
"Teruel",
"Toledo",
"Valencia",
"Valladolid",
"Vizcaya",
"Zamora",
"Zaragoza"
];
$("#autoc1").autocomplete({
source: arrayValoresAutocompletar
})
})
</script>
</head>
<body>
<h1>Probando el plugin autocomplete de jQuery UI</h1>
<form>
Escribe una provincia de España: <input type="text" size="20" id="autoc1">
<br>
* Pon al menos una letra para que salgan opciones.
<br>
* Puedes escribir algo como "ma" para que salgan sugerencias como "Madrid", "Salamanca", etc.
</form>
</body>
</html>
Este modo de trabajar con las opciones del autocomplete por medio de un array enviado al propio plugin es interesante cuando las posibilidades del campo son limitadas, pero no resulta optimo cuando las opciones que podrían colocarse son muchas, por ejemplo más de 100. En el artículo siguiente mostraremos cómo realizar este campo de autocompletado de manera que las opciones sugeridas se carguen desde un script remoto.