提交表单时,Vuelidate 为所有属性设置 dirty false
Vuelidate set dirty false for all properties when form is submitted
我有一个配置了 Vuelidate
验证器的简单表单。如果 input
处于 dirty
状态,它会显示错误消息,因此当 form
第一次打开时没有错误。
但是当我点击 submit
时,我希望得到一个“清晰的”form
,并且我只是打开它,但是相反,我在 [=13] 中得到了所有验证错误=].
有什么优雅的方法可以将所有 vuelidate
字段重新设置为 clear
状态,并获得 clear
表单吗?
<script>
import {required, email} from 'vuelidate/lib/validators'
export default {
data() {
return {
email: ''
//there could be a lot of props
}
},
methods: {
onSubmit() {
if (!this.$v.$invalid) {
const user = {
email: this.email,
//there could be a lot of props
};
console.log(user);
this.email = '';
}
}
},
validations: {
email: {required, email}
}
}
</script>
<template>
<div>
<form class="form" @submit.prevent="onSubmit">
<div class="input">
<label for="email">Email</label>
<input
:class="{ error: $v.email.$error }"
type="email"
id="email"
v-model.trim="email"
@input="$v.email.$touch()">
<div v-if="$v.email.$dirty">
<p class="error-message" v-if="!$v.email.email">Please enter a valid email</p>
<p class="error-message" v-if="!$v.email.required">Email must not be empty</p>
</div>
</div>
<button :disabled="$v.$invalid" type="submit">Submit</button>
</form>
</div>
</template>
经过一些研究,我发现 this.$v.$reset();
使事情变得如此
我有一个配置了 Vuelidate
验证器的简单表单。如果 input
处于 dirty
状态,它会显示错误消息,因此当 form
第一次打开时没有错误。
但是当我点击 submit
时,我希望得到一个“清晰的”form
,并且我只是打开它,但是相反,我在 [=13] 中得到了所有验证错误=].
有什么优雅的方法可以将所有 vuelidate
字段重新设置为 clear
状态,并获得 clear
表单吗?
<script>
import {required, email} from 'vuelidate/lib/validators'
export default {
data() {
return {
email: ''
//there could be a lot of props
}
},
methods: {
onSubmit() {
if (!this.$v.$invalid) {
const user = {
email: this.email,
//there could be a lot of props
};
console.log(user);
this.email = '';
}
}
},
validations: {
email: {required, email}
}
}
</script>
<template>
<div>
<form class="form" @submit.prevent="onSubmit">
<div class="input">
<label for="email">Email</label>
<input
:class="{ error: $v.email.$error }"
type="email"
id="email"
v-model.trim="email"
@input="$v.email.$touch()">
<div v-if="$v.email.$dirty">
<p class="error-message" v-if="!$v.email.email">Please enter a valid email</p>
<p class="error-message" v-if="!$v.email.required">Email must not be empty</p>
</div>
</div>
<button :disabled="$v.$invalid" type="submit">Submit</button>
</form>
</div>
</template>
经过一些研究,我发现 this.$v.$reset();
使事情变得如此