当前位置: 首页 > news >正文

elementui中rules的validator 用法

Element UI 中,rulesvalidator 是用于自定义校验规则的核心属性,适用于复杂或非标准验证逻辑。以下是完整用法说明:


✅ 基本结构

rules: {fieldName: [{validator: (rule, value, callback) => {// rule:当前规则配置// value:当前字段值// callback:验证完成后的回调if (/* 验证失败 */) {callback(new Error('错误提示信息'));} else {callback(); // 验证通过}},trigger: 'blur' // 触发方式}]
}

✅ 示例:用户名长度必须大于3

data() {const validateUser = (rule, value, callback) => {if (!value || value.length <= 3) {callback(new Error('用户名长度必须大于3'));} else {callback();}};return {form: { user: '' },rules: {user: [{ required: true, message: '请输入用户名', trigger: 'blur' },{ validator: validateUser, trigger: 'blur' }]}};
}
<el-form :model="form" :rules="rules" ref="form"><el-form-item label="用户名" prop="user"><el-input v-model="form.user" /></el-form-item>
</el-form>

✅ 表单提交时触发验证

this.$refs.form.validate(valid => {if (valid) {// 验证通过} else {// 验证失败}
});

✅ 高级用法:动态传参(如表格行)

如果你需要在校验函数中访问外部变量(如表格行数据),可以通过函数返回规则的方式实现:

validatorQty(row) {return [{validator: (rule, value, callback) => {if (!value && !row.otherField) {callback(new Error('请至少选择一项'));} else {callback();}},trigger: 'blur'}];
}

然后在模板中:

<el-form-item :rules="validatorQty(row)" prop="someField"><el-input v-model="row.someField" />
</el-form-item>

✅ 注意事项

  • callback() 必须调用,否则验证不会结束;
  • validator 支持异步校验(如接口校验),只需在异步完成后调用 callback()
  • 多个规则会按顺序执行,直到遇到第一个失败。

如需更复杂规则(如正则、联动校验、异步接口验证),都可以在 validator 中实现。

http://www.dtcms.com/a/309459.html

相关文章:

  • 3ds Max V-Ray渲染崩溃?8招告别卡顿冻结
  • 建造者模式及优化
  • docker配置gpu运行环境:linux离线安装nvidia-container,避免网络问题
  • 预测性维护之温振传感器选型与应用秘籍
  • 抗辐照DCDC与MCU在核环境监测设备中的集成应用
  • 使用 Docker 部署 Label Studio 时本地文件无法显示的排查与解决
  • 新手小白做一个简单的微服务
  • pve 删除集群
  • 车规MCU软错误防护技术的多维度分析与优化路径
  • cloudflare worker + Cloudflare AI Gateway
  • 软件性能优化:善用80-20法则,精准突破瓶颈
  • 平板练打字软件:5款平板电脑打字软件推荐
  • TCP RTO 与丢包检测
  • Redis的ZipList、SkipList和ListPack之间的区别
  • Spring Boot 整合量子密钥分发(QKD)实验方案
  • VS Code 插件扩展:用户交互开发
  • 高性能实时分析数据库:Apache Druid 数据管理教程 Configure data retention Append data Update data
  • 数据库小知识
  • 03 Broker主从架构和集群模式
  • 新一代PLC控制软件平台EsDA-AWStudio
  • github代理
  • Uniapp 验证 HTTPS 协议
  • AI文档比对和Word的“比较”功能有什么区别?
  • Python游戏开发引擎设计与实现
  • ⭐ Unity 实现UI视差滚动效果(Parallax)鼠标控制、可拓展陀螺仪与脚本控制
  • Java设计模式之行为型模式(解释器模式)实现方式详解
  • golang的函数
  • Hutool 的完整 JSON 工具类示例
  • 计算机(电脑)是什么?零基础硬件软件详解
  • FreeSWITCH与Java交互实战:从EslEvent解析到Spring Boot生态整合的全指南