Tengo un formulario para iniciar sesión y crear una cuenta. Se agregan campos adicionales cuando se marca una casilla de verificación.
<label for="createNewAccount" >Create account <input v-model="form.createNewAccount" type="checkbox" name="createNewAccount"> </label>Esto devuelve un valor booleano.
data () { return { form:{ admEmail: '', admPassWord: '', confPassWord: '', createNewAccount: false, } } }, Estoy usando vuelidate, pero el mismo validador incorporado debe ejecutarse solo si this.form.createNewAccount === true .
esto funciona (pero no veo cómo introducir el requisito de que this.form.createNewAccount debe ser verdadero para que esto se ejecute):
confPassWord: { myFunction: helpers.withMessage( `La confirmation ne correspond pas au mot de passe.`, sameAs(this.form.admPassWord) ) }Intenté esto:
validations () { return { form: { confPassWord: { myFunction: helpers.withMessage( `La confirmation ne correspond pas au mot de passe.`, (value) => { if (this.form.createNewAccount === true) { value === this.form.admPassWord } return true } ) }console.log(value + this.form.admPassWord devuelve los valores correctos.
Espero que esta función se ejecute solo cuando this.form.createNewAccount === verdadero y siempre devuelva verdadero de lo contrario y devuelva falso cuando value === this.form.admPassWord devuelva falso.
Pero: siempre pasa la validación, incluso cuando this.form.createNewAccount es verdadero y las contraseñas no coinciden.
La solución más concisa es:
(value) => { return !this.form.createNewAccount || value === this.form.admPassWord; }Una solución más legible es:
(value) => { return this.form.createNewAccount ? value === this.form.admPassWord : true; }