element-ui中的el-form表单验证,只在提交按钮点击时才进行验证
element-ui中的el-form表单验证,只有在提交按钮点击时才进行验证,这样会减少消耗
其实很简单,直接在el-input上加一个属性就行:validate-event="false"
Form 表单组件的表单属性都有这么一个属性
示例
<template>
<el-form
ref="fieldFormRef"
:model="fieldForm"
:rules="fieldRules"
label-position="top"
label-width="80px"
>
<el-form-item label="字段" prop="field">
<el-row style="width: 100%" :gutter="20">
<el-col :span="15">
<el-input
:validate-event="false" // !!!
size="small"
v-model="fieldForm.field"
placeholder="字段名称"
clearable
/>
</el-col>
<el-col :span="9" class="text-center">
<el-button size="small" @click="onAddField(fieldFormRef)"
>添加</el-button
>
</el-col>
</el-row>
</el-form-item>
</el-form>
</tempalte>
<script setup>
const fieldFormRef = ref(null);
const fieldForm = reactive({
field: "",
});
// 验证字段是否输入正确
const validateField = (rule, value, callback) => {
console.log("value", value);
if (value === "") {
callback(new Error("请输入字段"));
} else if (value.length > 15) {
callback(new Error("长度限制在1-15字"));
} else if (tableData.value.map((f) => f.field).includes(value)) {
callback(new Error("字段重复"));
} else {
callback();
}
};
const fieldRules = reactive({
field: [{ validator: validateField, trigger: "blur" }], // 将'blur'去掉,是鼠标失去焦点的时候会触发验证
});
// 在点击确定按钮的时候,触发函数,然后进行验证
const onAddField = async (formEl) => {
if (!formEl) return;
await formEl.validate((valid, fields) => {
console.log(valid, fields);
if (valid) {
console.log("success");
} else {
console.log("error submit!", fields);
}
});
};
</script>
分类:
前端 / Vue学习
, 前端
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了