Add Signup validation and feedback

This commit is contained in:
Hubert Van De Walle 2020-04-12 15:03:52 +02:00
parent 719a3a9f4f
commit c1abc028e1

View File

@ -1,5 +1,6 @@
<template> <template>
<div> <div>
<b-card class="mt-3" header="Signup">
<b-form @submit.prevent="handleSubmit"> <b-form @submit.prevent="handleSubmit">
<b-form-group <b-form-group
id="email-group" id="email-group"
@ -22,7 +23,11 @@
v-model="form.username" v-model="form.username"
required required
placeholder="Enter a username" placeholder="Enter a username"
:state="validUsername"
></b-form-input> ></b-form-input>
<b-form-invalid-feedback :state="validUsername">
Your username must be at least 5 characters long.
</b-form-invalid-feedback>
</b-form-group> </b-form-group>
<b-form-group id="password-group" label="Password:" label-for="password"> <b-form-group id="password-group" label="Password:" label-for="password">
@ -31,7 +36,11 @@
v-model="form.password" v-model="form.password"
required required
placeholder="Enter a password" placeholder="Enter a password"
:state="validPassword"
></b-form-input> ></b-form-input>
<b-form-invalid-feedback :state="validPassword">
Your password must be at least 6 characters long.
</b-form-invalid-feedback>
</b-form-group> </b-form-group>
<b-form-group id="password-confirm-group" label="Confirm password:" label-for="password-confirm"> <b-form-group id="password-confirm-group" label="Confirm password:" label-for="password-confirm">
@ -40,11 +49,17 @@
v-model="form.passwordConfirm" v-model="form.passwordConfirm"
required required
placeholder="Confirm your password" placeholder="Confirm your password"
:state="passwordEquals"
></b-form-input> ></b-form-input>
<b-form-invalid-feedback :state="passwordEquals">
Your password must be at least 6 characters long.
</b-form-invalid-feedback>
</b-form-group> </b-form-group>
<b-button type="submit" variant="primary">Submit</b-button> <b-button type="submit" variant="primary">Submit</b-button>
</b-form> </b-form>
</b-card>
<b-card class="mt-3" header="Form Data Result"> <b-card class="mt-3" header="Form Data Result">
<pre class="m-0">{{ form }}</pre> <pre class="m-0">{{ form }}</pre>
</b-card> </b-card>
@ -61,12 +76,29 @@
email: '', email: '',
password: '', password: '',
passwordConfirm: '' passwordConfirm: ''
},
} }
},
computed: {
passwordEquals: function () {
return this.form.password === this.form.passwordConfirm
},
validUsername: function () {
return this.form.username.length >= 5
},
validPassword: function () {
return this.form.password.length >= 6
},
validInput() {
return this.validUsername && this.passwordEquals && this.validPassword;
} }
}, },
methods: { methods: {
handleSubmit(){ handleSubmit() {
console.log("submitted")
if (this.validInput) {
console.log("Valid")
}
} }
} }
} }