Los formularios son parte de la mayoría de las aplicaciones web actuales. Permiten recibir datos de los usuarios para luego validarlos y poder interactuar con ellos.
En este artículo voy a mostrar cómo trabajar con formularios en Vue. Comenzaré creando uno simple y usaré la directiva v-model para mantener sincronizada la entrada del usuario con el modelo de datos. También utilizaré modificadores, los cuales permiten cambiar el comportamiento predeterminado del manejo de eventos del navegador. Y los filtros, que permiten formatear la salida que ve el usuario. Finalmente implementaré las validaciones del mismo.
Requisitos del formulario
- En primer lugar se nos muestra el formulario con el subtítulo indicando que se complete.
- A continuación, una serie de campos de entrada para ser rellenados por el usuario y un selector con tres opciones .
- Al pulsar el botón de registro se envía el formulario.
- Antes de ser enviado, este se intercepta para ser validado.
- De haber errores, estos se muestran en un mensaje.
- Al elegir cierta opción del selector se hace visible un nuevo campo.
- Este también debe ser validado.
- Una vez se han validado todos los campos correctamente, el formulario se envía.
- Se muestra un aviso informando al usuario del correcto funcionamiento.
Implementación del formulario
La aplicación está compuesta por un archivo index.html con la estructura del formulario, un archivo validar-vue.js con la lógica del programa y un style.css con los estilos a aplicar.
Campos del formulario
En index.html se implementan los distintos campos. Tenemos dos input de tipo texto para el nombre y los apellidos y otros dos de tipo email y password. Adicionalmente tenemos otro para seleccionar el medio de transporte. Además de un input de tipo submit para enviar el formulario.
Utilizamos la directiva v-model en los elementos input y select para conectar de manera bidireccional los datos de entrada de nuestro usuario y nuestro modelo de datos dentro de la aplicación Vue, lugar en el cual inicializamos los datos, los cuales son tomados como fuente de verdad.
Usamos la directiva v-for para representar la lista de elementos del array que contiene los medios de transporte que podemos selecionar. Con v- bind:value logramos enlazar el valor seleccionado por el usuario con el valor contenido en «option.value», en lugar de que la propia cadena sea tomada como el valor en sí.
Campo condicional
Al seleccionar una de las opciones del apartado anterior (la opción ‘Automóvil’ en este caso), queremos que aparezca un campo adicional que permita introducir la matrícula. Esto lo implementamos utilizando la directiva v-if = «inputVisible». En el caso de que esta devuelva como valor true, se mostrará todo lo contenido en esta etiqueta.
Ahora sólo hay que inicializar la variable matricula e implementar lo que se conoce como propiedad computada ‘inputVisible‘ para que devuelva true en el caso de que se haya seleccionado la opción 3. Añadimos a nuestro código JavaScript lo siguiente:
Avisos para el usuario
Para facilitar la comunicación con el usuario, visualizamos tres tipos de mensajes dependiendo del estado en el que se encuentra el formulario. En un estado inicial se mostrará un mensaje indicando que se debe completar el mismo. En otro estado se detalla una lista con los errores que se hayan detectado. Y en el caso de que todo esté correcto, se informa que ha sido enviado.
Para manejar los distintos mensajes dependientes de los distintos estados, haremos uso de las directivas v-if y v-else, del atributo submited, de la propiedad computada hasErrors, así como de la directiva v-for y el array errors para mostrar los errores de validación por pantalla.
Al archivo JavaScript habría que añadirle las siguientes líneas de código:
Validación
Al ser enviado el formulario, debemos capturar el evento y hacer una comprobación de los datos antes de terminar de ejecutar el envío. Esto lo hacemos mediante la directiva v-on: , junto al manejador de eventos submit (@submit abreviado), el modificador .prevent y ejecutando el método «checkForm» de la siguiente forma:
En el método «checkForm» además de incluir la lógica para la validación, al atributo submitted se le asigna el valor true para indicar que ya ha sido completado.
Lógica de validación
Para que el método checkForm devuelva true, debe cumplir una serie de condiciones, esto es que los atributos name, secondName, email y password sean distintas de null.
Validación de un campo condicional
Además hay que añadirle el método validateChoice, el cual devolverá false en el caso en el que el atributo choice sea igual a -1 o siendo este igual a 3, el atributo matricula no contenga ningún valor.
Expresión regular
En último lugar se comprueba que el formato de correo electrónico es el correcto. Esto lo logramos testando una simple expresión regular.
Mensajes de error
Finalmente si no se cumple alguna condición, esta se almacena en el array errors para ser visualizada en pantalla.
Deja una respuesta