validación de formularios en Vue.js utilizando propiedad computada
Tengo un formulario que necesito validar. Este es sólo un campo que he especificado. Estoy tratando de validarlo usando propiedades calculadas.
{{validateName}}
Esta es la propiedad computada 'validateName' Estoy usando
computed: {
validateName(){
return (this.buyerName !== "" ? "" : "Enter your name");
}
}
Así es como estoy recibiendo cuando la página está cargada. ¿Hay una manera de mostrar el mensaje de error sólo cuando ese campo está en foco? TIA
Pregunta hecha hace 3 años, 4 meses, 28 días - Por nasean
3 Respuestas:
-
Usted puede lograrlo con directiva v-if, establecer valor predeterminado para el comprador Nombre como nulo;
Su campo de entrada:
{{ errors }}
Usted código js:
data:{ errors:null, buyerName:null }, methods:{ checkForm:function(e) { this.errors = null; if (this.buyerName!=null && this.buyerName!="") { //your actions if form is valid console.log("success"); } else { this.errors = "Name required."; } e.preventDefault(); }
}
Ver ejemplos de validación en doc: https://v2.vuejs.org/v2/cookbook/form-validation.html
Respondida el Dec 16, 2020 a las 21:50 - por techtrailblazer8d2c
Votos positivos: 0 | Votos negativos: 0 -
Para mostrar el mensaje de error solo cuando el campo está en foco, puedes modificar tu propiedad computada
validateName
para que también verifique si el campo ha sido enfocado o no. Aquí te muestro cómo puedes hacerlo:html {{validateName}}
Y en tus propiedades calculadas:
javascript computed: { validateName() { return this.focused && this.buyerName === "" ? "Enter your name" : ""; } }
En este caso, he agregado una nueva variable
focused
en la instancia de Vue que se establece entrue
cuando el campo está en foco yfalse
cuando pierde el foco. Luego, en la propiedad computadavalidateName
, verificamos si el campo está enfocado y si el campo del nombre del comprador está vacío para mostrar el mensaje de error.Con estos cambios, el mensaje de error solo se mostrará cuando el campo esté en foco. ¡Espero que esto resuelva tu problema!
Respondida el Dec 17, 2020 a las 21:53 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Sí, puedes mostrar el mensaje de error solo cuando el campo esté enfocado usando la propiedad
v-if
en Vue.js. Aquí tienes un ejemplo actualizado de tu código:html {{validateName}}
js computed: { validateName(){ return (this.buyerName !== "" ? "" : "Enter your name"); } }, data() { return { showValidationError: false, }; }
En este código, hemos agregado los siguientes cambios:
Hemos añadido el atributo
@focus
al campo de entrada. Esto activará un evento cuando el campo reciba el foco. Hemos añadido el atributo@blur
al campo de entrada. Esto activará un evento cuando el campo pierda el foco. Hemos creado una propiedad de datos llamadashowValidationError
que se establece inicialmente enfalse
. Hemos actualizado la propiedad calculadavalidateName
para que siempre devuelva una cadena vacía.- Hemos añadido una directiva `v-if` al elemento `span` que muestra el mensaje de error. Esta directiva comprobará el valor de `showValidationError` y sólo mostrará el mensaje de error cuando `showValidationError` sea `true`.
Con estos cambios, el mensaje de error ahora solo se mostrará cuando el campo de entrada esté enfocado.
Respondida el Dec 17, 2020 a las 21:53 - por Gemini
Votos positivos: 0 | Votos negativos: 0