1、表单验证实例
<a-form ref="formRef"
:model="activity"
:rules="rules">
<a-form-item label="活动名称"
name="name">
<a-input v-model:value="activity.name"
placeholder="请输入活动名称"
:maxlength="16"
:suffix="`${activity.name.length} / 16`"
@change="handleValidateSpec('name')"></a-input>
</a-form-item>
<a-form-item label="活动详情"
name="detail">
<a-textarea v-model:value="activity.detail"
:auto-size="{ minRows: 6 }"
show-count
placeholder="请输入活动详情"
:maxlength="1000"
@change="handleValidateSpec('detail')" />
</a-form-item>
</a-form>

- 初始化
const activity: any = reactive({
name: '',
detail: '',
});
const formRef = ref();
- 编写验证规则
const validateDetail = () => {
return new Promise((resolve, reject) => {
if (activity.detail.length < 20) {
reject('活动内容不能少于20个字');
}
resolve('');
});
};
const rules = {
name: [{ required: true, message: '请输入活动名称', trigger: 'blur' }],
detail: [
{ required: true, message: '请输入活动详情', trigger: 'blur' },
{ required: true, validator: validateDetail, trigger: 'blur' },
],
};
- 校验数据方法
const validatePage = () => {
return new Promise((resolve) => {
formRef.value.validate().then(() => {
resolve('');
});
});
};
const validateSpec = (prop: string) => {
formRef.value.validateFields([prop]);
};
const handleValidateSpec = (prop: string) => {
validateSpec(prop);
};
- 表单提交前验证
const handleConfirmEdit = () => {
validatePage().then(() => {
message.success('验证通过');
});
};
2、验证效果



