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

vue3单独封装表单校验函数

1.在页面中建一个.ts文件

import { useI18n } from '@/hooks/web/useI18n'
import { FormItemRule } from 'element-plus'const { t } = useI18n()interface LengthRange {min: numbermax: numbermessage?: string
}
//必输项校验
export const useValidator = () => {const required = (message?: string): FormItemRule => {return {required: true,message: message || t('common.required')}}
//长度校验,字符转字节计算,英文字符按 1 字节计算,中文按两个字符
const customByteLengthRange = (options: LengthRange): FormItemRule => {const { min, max, message } = optionsreturn {validator: (_, val, callback) => {let length = 0for (let char of val) {if (/[\u4e00-\u9fa5]/.test(char)) {length += 2} else {length += 1}}if (length < min || length > max) {callback(new Error(message))} else {callback()}}}
}//输入值不能包含空格const notSpace = (message?: string): FormItemRule => {return {validator: (_, val, callback) => {if (val?.indexOf(' ') !== -1) {callback(new Error(message || t('common.notSpace')))} else {callback()}}}}
//验证输入值不能包含特殊字符const notSpecialCharacters = (message?: string): FormItemRule => {return {validator: (_, val, callback) => {if (/[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/gi.test(val)) {callback(new Error(message || t('common.notSpecialCharacters')))} else {callback()}}}}return {required,customByteLengthRange ,notSpace,notSpecialCharacters}
}

2…vue组件内使用方法,useValidator()上面封装的.ts函数

const rules = {username: [useValidator().customByteLengthRange ({ min: 4, max: 20 }) // 汉字按 2 字节计算,英文字符按 1 字节计算]
}
http://www.lryc.cn/news/2403921.html

相关文章:

  • mysql 页的理解和实际分析
  • 分享一道力扣
  • 青少年编程与数学 01-011 系统软件简介 06 Android操作系统
  • 构建 MCP 服务器:第 2 部分 — 使用资源模板扩展资源
  • 【算法设计与分析】实验——汽车加油问题, 删数问题(算法实现:代码,测试用例,结果分析,算法思路分析,总结)
  • Ubuntu2404 下搭建 Zephyr 开发环境
  • 现代C++特性(一):基本数据类型扩展
  • 【C++进阶篇】C++11新特性(下篇)
  • 全生命周期的智慧城市管理
  • echarts柱状图实现动态展示时报错
  • Redis故障转移
  • STM32学习笔记:定时器(TIM)原理与应用(详解篇)
  • JAVA获取ES连接并查询所有数据
  • 408第一季 - 数据结构 - 线性表
  • 第23讲、Odoo18 邮件系统整体架构
  • 【QT面试题】(三)
  • DeepSeek09-open-webui使用
  • HarmonyOS:Counter计数器组件
  • 数据类型 -- 字符
  • WordZero:让Markdown与Word文档自由转换的Golang利器
  • sqlsugar WhereIF条件的大于等于和等于查出来的坑
  • Pandas 技术解析:从数据结构到应用场景的深度探索
  • 数据库系统概论(十七)超详细讲解数据库规范化与五大范式(从函数依赖到多值依赖,再到五大范式,附带例题,表格,知识图谱对比带你一步步掌握)
  • [c#]判定当前软件是否用管理员权限打开
  • 并发编程实战(生产者消费者模型)
  • 分布式微服务系统架构第144集:FastAPI全栈开发教育系统
  • el-tabs 切换时数据不更新的问题
  • git小乌龟不显示图标状态解决方案
  • 获取 OpenAI API Key
  • 【Android基础回顾】五:AMS(Activity Manager Service)