Element-UI表单验证 二选一、三选一、多选一验证

Element-UI表单验证二选一验证

在表单提交过程中很多时候要用到几个表单项二选一验证或多选一验证,比如联系方式中的手机号和固定电话只需要填写一项就可通过验证,针对这样情况可以使用Element-UI的自定义验证实现,具体实现方法如下。

HTML代码

javascript 复制代码
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="form">
	<el-row :xs="24" style="width:96%">
		<el-col :span="8">
            <el-form-item label="简单:" prop="singleChoiceEasy" >
                <el-input v-model.number="ruleForm.singleChoiceEasy" placeholder="题量" @input="clearRule('singleChoiceDifficulty','singleChoiceMedium')"></el-input>
            </el-form-item>
        </el-col>
        <el-col :span="8">
            <el-form-item label="中等:" prop="singleChoiceMedium">
                <el-input v-model.number="ruleForm.singleChoiceMedium" placeholder="题量" @input="clearRule('singleChoiceDifficulty','singleChoiceEasy')"></el-input>
            </el-form-item>
        </el-col>
        <el-col :span="8">
            <el-form-item label="困难:" prop="singleChoiceDifficulty">
                <el-input v-model.number="ruleForm.singleChoiceDifficulty" placeholder="题量" @input="clearRule('singleChoiceEasy','singleChoiceMedium')"></el-input>
            </el-form-item>
        </el-col>
	</el-row>
</el-form>
javascript 复制代码
data() {
	var validateNum= (rule, value, callback) => {
        if (!this.ruleForm.singleChoiceEasy && !this.ruleForm.singleChoiceMedium && !this.ruleForm.singleChoiceDifficulty) {
            callback(new Error('请至少填写一项'));
        } else {
            callback();
        }
    };
    return {
		ruleForm: {},
		rules: {
			singleChoiceEasy: [
                { required: true,  validator: validateNum, trigger: 'blur' },
                { type: 'number', message: '必须为正整数', trigger: 'blur'}
            ],
            singleChoiceMedium: [
                { required: true,  validator: validateNum, trigger: 'blur' },
                { type: 'number', message: '必须为正整数', trigger: 'blur'}
            ],
            singleChoiceDifficulty: [
                { required: true,  validator: validateNum, trigger: 'blur' },
                { type: 'number', message: '必须为正整数', trigger: 'blur'}
            ]
		}
	}
},
methods: {
	clearRule(obj,obj1) {
//接收参数 表单prop
        this.$refs.ruleForm.clearValidate(obj);
        this.$refs.ruleForm.clearValidate(obj1);
    }
//另一种方式 表单@input 给他 
clearRule() {

        this.$refs.ruleForm.clearValidate();
        this.$refs.ruleForm.validateField(["singleChoiceEasy","singleChoiceMedium","singleChoiceDifficulty"]);
    }
}
相关推荐
AwesomeCPA1 天前
Miaoduo MCP 使用指南(VDI内网环境)
前端·ui·ai编程
hu55667982 天前
Photoshop(PS)蓝底和红底照片的CMYK值色值是多少
ui·photoshop
UXbot2 天前
AI原型设计工具评测:从创意到交互式Demo,5款产品全面解析
前端·ui·设计模式·ai·ai编程·原型模式
小樱花的樱花2 天前
打造高效记事本:UI设计到功能实现
开发语言·c++·qt·ui
小程故事多_802 天前
AI Coding 工程化革命,Superpowers 管流程,ui-ux-pro-max 管质感
人工智能·ui·架构·aigc·ai编程·ux·claude code
路过&2 天前
自制了一款字体点阵生成器
单片机·ui
RReality2 天前
【Unity Shader URP】全息扫描线(Hologram Scanline)源码+脚本控制
ui·unity·游戏引擎·图形渲染
小小工匠2 天前
LLM - awesome-design-md 从 DESIGN.md 到“可对话的设计系统”:用纯文本驱动 AI 生成一致 UI 的新范式
人工智能·ui
Ulyanov2 天前
基于ttk的现代化Python音视频播放器:UI设计与可视化技术深度解析
python·ui·音视频
UXbot3 天前
2026年AI全链路产品开发工具对比:5款从创意到上线一站式平台深度解析
前端·ui·kotlin·软件构建·swift·原型模式