This page looks best with JavaScript enabled

ASP.NET MVC: Autocompletado con enums

 ·  ☕ 6 min  ·  ✍️ eiximenis

Nota: Este post ha sido importado de mi blog de geeks.ms. Es posible que algo no se vea del todo "correctamente". En cualquier caso puedes acceder a la versión original aquí

La verdad es que el tema de los enums y ASP.NET MVC da para hablar bastante (yo mismo hice un post hace ni mucho). Pero hace algunos días mi buen amigo y a veces rival, Marc Rubiño publicó en su blog un interesante artículo sobre como crear combos que mostrasen valores de enums.

En este post voy a mostrar una técnica parecida, pero a través de las data list, un concepto nuevo de HTML5 que como pasa muchas veces está recibiendo menos atención de la que merece. Y es que las data list nos dan una manera fácil y sencilla de tener cajas de texto que se autocompleten.

Qué son las data lists de HTML5?

Bueno, pues como ya debes deducir de su nombre las data list no es nada más que la posibilidad de definir un concepto nuevo, que es esto: una lista de datos.

Una lista de datos se usa como fuente de datos para un control que pueda tener una y lo bueno es que el viejo y a veces injustamente denostado entran en esta categoría. Honestamente no entiendo como el para asociar a un (p. ej. una caja de texto) una lista de valores:

<input type="text" id="txtSexo" list="sexo" placeholder="Sexo" autocomplete="on" />

Básicamente tan solo se trata de usar el atributo list con el valor del id de la data list a usar.

El atributo id es requerido por Chrome (si no se aplica al Chrome ignora el atributo list). Este es el resultado en Chrome, Opera e IE10:

image

Podemos ver las diferencias entre navegadores:

  • Chrome nos muestra el value a la izquierda y la descripción a la derecha
  • Opera tan solo nos muestra el value
  • IE10 tan solo nos muestra la descripción

Sin duda el mejor mecanismo, en mi opinión, es el de Chrome, luego el de Opera y por último el de IE10. No he podido probar FF ni Safari por no tenerlos a mano en el momento de escribir el post.

Igual te sorprende que prefiera que el desplegable muestre N, P, M y D como hace Opera en lugar de Nada, Poco,… que muestra IE10. Eso es porque el valor que se debe teclear en el textbox es el de value. El valor de value es el que se almacena en el textbox, y por lo tanto es el que debe teclearse (a diferencia de la no tiene esta opción).

Ten presente siempre que estamos usando un por lo que el usuario puede entrar lo que quiera. No es como una