Cómo crear un Datalist que se pueda buscar instantáneamente
Las listas desplegables son una buena manera de proporcionando opciones para un campo de entrada, particularmente cuando la lista de opciones disponibles es larga. Un usuario puede elegir la opción que desee por escribiendo en el campo, o mira las opciones Eso puede ser un partido para lo que están buscando.. Ser capaz de buscar a través de las opciones., Sin embargo, es la solución ideal..
Este comportamiento se puede lograr con la Elemento HTML que muestra sugerencias de entrada para diferentes controles, como el
etiqueta. sin embargo
Solo muestra las opciones disponibles cuando el usuario tiene ya escribi algo en el campo de entrada.
Podemos hacer que un campo de entrada sea más útil si permitimos a los usuarios Accede a la lista completa de opciones. en cualquier momento durante el proceso de toma de entrada.
En este post, vamos a ver cómo crear un lista desplegable que se puede buscar en cualquier momento utilizando la y
Elementos HTML y un poco de JavaScript..
1. Crea un Datalist con opciones
Primero, creamos un datalist para diferentes editores de texto. Asegúrese de que el valor de la lista
atributo de la etiqueta es lo mismo que la
carné de identidad
del etiqueta - así es como los unimos entre sí.
2. Haz que el Datalista sea visible
Por defecto, el Elemento HTML es oculto. Solo podemos verlo cuando empezar a escribir una entrada en el campo se adjunta el datalista.
Sin embargo, hay una manera de "forzar" el contenido del datalista (es decir, todas sus opciones) aparecer en la pagina web. Solo tenemos que darle un adecuado. monitor
valor de propiedad otro que ninguna
, por ejemplo bloqueo de pantalla;
.
datalist display: block;
Las opciones mostradas aún no son seleccionables en este punto, solo el navegador rinde las opciones se encuentra dentro del datalista.
Como se mencionó anteriormente, debido al comportamiento incorporado de la elemento, Una parte de las opciones ya aparecen y son seleccionables., pero solo cuando el usuario comienza a escribir una cadena en la que el navegador puede encontrar una opción coincidente.
También necesitamos encontrar un mecanismo para hacer todos opciones (en la captura de pantalla anterior que se muestra debajo del listado de datos desplegable) seleccionable a Cualquier otro punto del proceso de toma de entrada. - cuando los usuarios desean revisar las opciones antes de escribir algo, o mientras ya han introducido algo en el campo de entrada.
3. Traer en el
Elemento HTML
Hay dos formas de permitir a los usuarios Ver y seleccionar todas las opciones. cuando quieran
- Podemos añadir un haga clic en el controlador de eventos para cada opción, y úselo para seleccionar una opción cuando se haga clic en él, o también podemos transformar las opciones en una lista desplegable real, el cual, por defecto, es seleccionable.
- Podemos envolver las opciones del datalista con el
Elemento HTML.
Elegiremos el segundo método, ya que es más sencillo y se puede usar como un mecanismo de reserva en los navegadores que no son compatibles con el elemento. Cuando un navegador no puede mostrar y visualizar el datalist, rinde el
Elemento con todas sus opciones. en lugar.
Por defecto, el seleccionar
El elemento no aparece en los navegadores que admiten datalist, es decir, hasta que Forzar al datalista a hacer su contenido. con el bloqueo de pantalla;
Regla CSS.
Entonces, cuando nosotros envolver las opciones del ejemplo anterior (donde el datalista tiene bloqueo de pantalla
) con el Etiqueta HTML, el código se ve a continuación:
A ver todas las opciones de seleccionar
en la lista desplegable, necesitamos usar los atributos múltiple
para mostrar más de una opción, y tamaño
Por el número de opciones que queremos mostrar..
4. Añadir un botón de alternar
Se supone que la lista desplegable completa aparece solamente cuando el usuario hace clic en un botón de alternar junto al campo de entrada, mientras el usuario escribe el datalist de trabajo se muestra. Vamos a cambiar el monitor
valor del datalista a ninguna
, y también agregar un botón junto al campo de entrada, que cambiará la monitor
valor del datalista, y en consecuencia desencadenar la aparición de seleccionar
.
datalist mostrar: ninguno;
También necesitamos agregar el siguiente botón encima del listado de datos en el archivo HTML:
Ahora veamos el JavaScript. Primero, definimos la variables iniciales.
button = document.querySelector ('button'); datalist = document.querySelector ('datalist'); select = document.querySelector ('select'); opciones = seleccionar.opciones;
A continuación, necesitamos agregar un detector de eventos (toggle_ddl
) para hacer clic en el evento del botón que Alternar la apariencia del datalista..
button.addEventListener ('clic', toggle_ddl);
Entonces, definimos la toggle_ddl ()
función. Para ello, necesitamos comprobar el valor de la datalist.style.display
propiedad. Si es una cadena vacía, el datalist está oculto, por lo que necesitamos establece su valor en bloquear
, y también a cambiar el botón de una flecha que apunta hacia abajo a una flecha que apunta hacia arriba.
function toggle_ddl () / * si DDL está oculto * / if (datalist.style.display === ") / * show DDL * / datalist.style.display = 'block'; this.textContent =" âÂ-² "; else hide_select (); function hide_select () / * hide DDL * / datalist.style.display ="; button.textContent = "âAUTOMÓVIL CLUB BRITÁNICO¼";
los hide_select ()
función esconde el datalista estableciendo el datalist.style.display
la propiedad de nuevo a una cadena vacía, y cambiar la flecha del botón de nuevo para apuntar hacia abajo.
En la configuración final, si los campos de entrada contienen una opción previamente seleccionada y la lista desplegable también se ha activado con un clic en el botón posterior, la opción seleccionada anteriormente también necesita ser mostrado como seleccionado en la lista desplegable.
Entonces, vamos a agregar el siguiente código resaltado a la toggle_ddl ()
función:
function toggle_ddl () / * si DDL está oculto * / if (datalist.style.display === ") / * show DDL * / datalist.style.display = 'block'; this.textContent =" âÂ-² "; var val = input.value; para (var i = 0; iTambién queremos ocultar la lista desplegable cuando el usuario está escribiendo en el campo de entrada (en el momento en que aparecerá el datalist de trabajo).
/ * cuando el usuario quiere escribir en el campo de texto, oculta DDL * / input = document.querySelector ('input'); input.addEventListener ('focus', hide_select);5. Actualizar entrada cuando se selecciona una opción
Finalmente, vamos Agrega un
cambio
controlador de eventos aletiqueta, de modo que cuando el usuario selecciona una opción de la lista desplegable, su valor se mostrará dentro de la
campo también.
/ * cuando el usuario selecciona una opción de DDL, escríbala en el campo de texto * / select.addEventListener ('change', fill_input); function fill_input () input.value = options [this.selectedIndex] .value; hide_select ();Inconvenientes
El principal inconveniente de esta técnica es la ausencia de una forma directa de estilizar el
elemento con CSS (la aparición de la
y
las etiquetas varían en diferentes navegadores).
Además, en Firefox, el texto de entrada se compara con las opciones que contiene los caracteres de entrada, mientras que otros navegadores coinciden con las opciones que empezar con esos personajes La especificación W3C para datalist no especifica explícitamente cómo se debe hacer la comparación.
Aparte de eso, este método es bueno y Funciona en todos los principales navegadores, mientras que en los navegadores donde puede que no funcione, los usuarios aún pueden ver la lista desplegable, solo las sugerencias no aparecerán.
Echa un vistazo a la demostración final con un poco de estilo CSS a continuación: