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

vue3 表单校验规则封装

1、定义一个表单验证规则对象

const validateRules = {// 非空验证required: {message: '此项为必填项',validate: (value) => !!value,},// 最大长度验证max: (max) => ({message: `输入内容长度不能超过${max}个字符`,validate: (value) => (!value || value.length <= max),}),// 最小长度验证min: (min) => ({message: `输入内容长度不能少于${min}个字符`,validate: (value) => (!value || value.length >= min),}),// 数值范围验证range: (min, max) => ({message: `输入值必须在${min}和${max}之间`,validate: (value) => (!value || (Number(value) >= min && Number(value) <= max)),}),// 正则表达式验证pattern: (pattern) => ({message: '输入格式不正确',validate: (value) => (!value || pattern.test(value)),}),// 验证两次输入是否一致equalTo: (target) => ({message: '两次输入不一致',validate: (value) => (value === target.value),}),
};

2、使用示例

const useValidate = () => {// 应用验证规则const validate = (rules, data) => {const errors = {};Object.keys(rules).forEach((key) => {const rule = rules[key];const validator = Array.isArray(rule) ? rule : [rule];validator.forEach((r) => {if (typeof r === 'function') {const result = r(data[key]);if (!result.validate) {errors[key] = result.message;}} else if (typeof r === 'object' && r.validate && !r.validate(data[key])) {errors[key] = r.message;}});});return errors;};return {validate,validateRules,};
};

3、使用

// 使用
const { validate, validateRules } = useValidate();// 定义表单规则
const formRules = {username: [validateRules.required, validateRules.max(10)],age: [validateRules.required, validateRules.range(18, 60)],
};// 表单数据
const formData = {username: 'Alice',age: '25',
};// 执行验证
const errors = validate(formRules, formData);
console.log(errors);


http://www.mrgr.cn/news/28945.html

相关文章:

  • Keithley吉时利2612B数字源表
  • 「QT」几何数据类 之 QVector2D 二维向量类
  • 【Golang】Go语言环境安装
  • 简析大模型参数高效微调方法
  • 正则表达式那些事儿
  • 为什么卷积现在不火了:CNN研究热度降温的深层原因分析
  • 【docker学习笔记】docker概念和命令
  • 我的5周年创作纪念日,不忘初心,方得始终。
  • CI/CD持续集成和持续交付(git工具、gitlab代码仓库、jenkins)
  • Vue3项目开发——新闻发布管理系统(七)
  • Koa安装和应用
  • RocksDB系列一:基本概念
  • 超全网络安全面试题汇总(2024版)
  • list从0到1的突破
  • 精选评测!分享5款AI写论文最好用的软件排名
  • Get包中的根组件
  • 驱动器磁盘未格式化恢复实战
  • c语言指针4
  • (十五)、把自己的镜像推送到 DockerHub
  • UE(C++API)
  • [Redis] Redis中的set和zset类型
  • Oracle 19c异常恢复—ORA-01209/ORA-65088---惜分飞
  • 代码随想录:动态规划4-5
  • 安徽省建设工程企业资质管理新动向
  • 阿里OSS对象存储服务,实现图片上传回显
  • 2019-2023(CSP-J)选择题真题解析