我有一个emailValidation方法,我想在this.$refs.editUserForm.validate('email')
为true时运行该方法,但如果我输入的电子邮件为jack@xyz.com
或任何有效的电子邮件,它总是返回this.$refs.editUserForm.validate('email')
为false。请帮助我了解如何检查表单中单个字段的验证。
<template>
<v-form ref="editUserForm" :model="user" data-app>
<v-text-field
v-model="user.first_name"
label="First Name"
:rules="firstNameRules"
class="required"
required
>
</v-text-field>
<v-text-field
v-model="user.email"
label="Email"
:rules="emailRules"
name="email"
class="required"
required
@blur="emailValidation"
>
</v-text-field>
</v-form>
</template>
<script>
export default {
data: function () {
return {
client: {
first_name: '',
email: ''
},
firstNameRules: [
value => !!value || 'Please enter a first name'
],
emailRules: [
v => /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/.test(v) || 'E-mail must
be valid'
]
};
},
methods: {
emailValidation(){
if (this.$refs.editUserForm.validate('email')) {
console.log("Valid")
}
else {
console.log("Not Valid")
}
}
}
};
</script>
1条答案
按热度按时间7lrncoxx1#
问题是表单的
validate
函数不接受字符串,它总是验证整个表单并返回结果,所以即使email字段有效,如果其他字段无效,它仍然会返回false。要只验证一个字段,需要为该字段提供一个
ref
,并只在该字段的ref上调用validate()
。验证代码也取决于您的Vuetify版本:
验证2.x
验证3.x
validate()
返回承诺,因此必须使用async/await