当前位置: 首页 > 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.lryc.cn/news/607085.html

相关文章:

  • 在线教程丨全球首个 MoE 视频生成模型!阿里 Wan2.2 开源,消费级显卡也能跑出电影级 AI 视频
  • Windows11 WSL安装Ubntu22.04,交叉编译C语言应用程序
  • 网站建设服务器从入门到上手
  • 《n8n基础教学》第一节:如何使用编辑器UI界面
  • 如何优雅删除Docker镜像和容器(保姆级别)
  • 服务器地域选择指南:深度分析北京/上海/广州节点对网站速度的影响
  • FreeSWITCH与Java交互实战:从EslEvent解析到Spring Boot生态整合的全指南
  • 分布式弹幕系统设计
  • Git 误删分支怎么恢复
  • ABP VNext + Dapr Workflows:轻量级分布式工作流
  • stl的MATLAB读取与显示
  • Blender 4.5 安装指南:快速配置中文版,适用于Win/mac/Linux系统
  • 【Mysql】字段隐式转换对where条件和join关联条件的影响
  • 安全专家发现利用多层跳转技术窃取Microsoft 365登录凭证的新型钓鱼攻击
  • 基于Pipeline架构的光存储读取程序 Qt版本
  • 九、Maven入门学习记录
  • 学习游戏制作记录(各种水晶能力以及多晶体)8.1
  • k8s之NDS解析到Ingress服务暴露
  • Wisdom SSH开启高效管理服务器的大门
  • Git之远程仓库
  • 【全网首个公开VMware vCenter 靶场环境】 Vulntarget-o 正式上线
  • Linux(15)——进程间通信
  • VMware 下 Ubuntu 操作系统下载与安装指南
  • 用 TensorFlow 1.x 快速找出两幅图的差异 —— 完整实战与逐行解析 -Python程序图片找不同
  • Ubuntu-Server-24.04-LTS版本操作系统如何关闭自动更新,并移除不必要的内核
  • 使用 Vive Tracker 替代 T265 实现位姿获取(基于 Ubuntu + SteamVR)
  • 【云计算】云主机的亲和性策略(二):集群节点组
  • 如何理解推理模型
  • 渗透作业3
  • 基于C#和NModbus4库实现的Modbus RTU串口通信