在这一步中,你将学习如何在 FormValidator.js
文件中实现 validateForm
函数来验证表单数据。
- 打开位于
components
目录下的 FormValidator.js
文件。
- 在
validateForm
函数中,找到目标3的 TODO 部分。
- 根据提供的
formRules
对象实现验证表单数据的逻辑。验证应遵循以下规则:
- 如果
nickname
字段为空,在 errors
对象中添加一个键为 "nickname"
的错误消息。
- 对于
email
字段:
- 如果字段为空,在
errors
对象中添加一个键为 "email"
的错误消息。
- 如果电子邮件地址不符合规则或不在正确的长度范围内,在
errors
对象中添加一个键为 "email"
的错误消息。
以下是一个示例实现:
const validateForm = () => {
return new Promise((resolve, reject) => {
errors.value = {}; // 清除之前的错误消息
// 验证昵称
try {
props.rules.nickname.map((item) => {
item?.validator(null, props.formData.nickname, (err) => {
if (err) {
throw "nickname|" + err.message;
}
});
});
} catch (e) {
const parseErr = e.split("|"),
errKey = parseErr[0],
errValue = parseErr[1];
errors.value[errKey] = errValue;
}
// 验证电子邮件
try {
props.rules.email.map((item) => {
if (item?.required) {
if (props.formData.email == "") throw "email|" + item.message;
}
if (item?.type) {
if (!validateByType(item.type, props.formData.email))
throw "email|" + item.message;
if (props.formData.email.length < 6) throw "email|" + item.message;
if (props.formData.email.length > 20) throw "email|" + item.message;
}
});
} catch (e) {
const parseErr = e.split("|"),
errKey = parseErr[0],
errValue = parseErr[1];
errors.value[errKey] = errValue;
}
if (hasErrors.value) {
resolve(false); // 存在错误,验证失败
} else {
resolve(true);
}
emit("valid", errors.value);
});
};
- 保存对
FormValidator.js
文件所做的更改。
恭喜!你现在已经完成了自定义表单验证器的实现。现在你可以通过运行项目并与表单进行交互来测试应用程序。完成后的效果如下: