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

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 字节计算]
}

相关文章:

  • 基于算法竞赛的c++编程(21)cin,scanf性能差距和优化
  • 题海拾贝:P1091 [NOIP 2004 提高组] 合唱队形
  • 总结html标签之button标签
  • Global Security Markets 第 10 章衍生品知识点总结​
  • 欣佰特科技亮相2025张江具身智能开发者大会:呈现人形机器人全链条解决方案
  • code-server安装使用,并配置frp反射域名访问
  • 磁铁的磁极与方向有什么关系
  • 主流信创数据库对向量功能的支持对比
  • 【教学类-103-02】20250607立体纸盘(3边形-22边形,角度30、45……75、90)
  • Go语言进阶④:Go的数据结构和Java的有啥不一样
  • 力扣-17.电话号码的字母组合
  • LeetCode--24.两两交换链表中的结点
  • Java 常用 API 分类总结(算法竞赛考前速记篇)- 适用于算法竞赛(如 CCF CSP、蓝桥杯、NOI)
  • 音频剪辑软件少之又少好用
  • 13-Oracle 23ai Vector Search VECTOR数据类型和实操
  • 计算机组成原理:计算机发展历程
  • 东芝Toshiba e-STUDIO2110AC打印机信息
  • 基于IDA的bindiff使用
  • BeckHoff(倍福) PLC 顺控器执行超时故障在北尔触摸屏显示的实现
  • gis geoserver 地图发布
  • design中国官网/自动seo系统
  • 纪实摄影网站推荐/泰安网站建设优化
  • 网站建设内部问卷/百度站长工具怎么关闭
  • 百度网站怎么做的赚钱吗/品牌策略怎么写
  • 典型的b2b网站有哪些/网站策划书模板
  • 做网站的有哪些学校/友情链接交易购买