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

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.xdnf.cn/news/12687.html

相关文章:

  • 使用 Laravel 中的自定义存根简化工作
  • 【笔记】WSL 中 Rust 安装与测试完整记录
  • 数控滑台技术革新:实现高效精密加工的全面探索
  • 深入剖析MySQL存储架构,索引结构,日志机制,事务提交流程
  • Java基于SpringBoot的校园闲置物品交易系统,附源码+文档说明
  • 《操作系统真相还原》——初探进程
  • 算法-多条件排序
  • 打卡day47
  • Coderider 试用报告
  • 1Panel运行的.net程序无法读取系统字体(因为使用了docker)
  • 硬盘寻址全解析:从 CHS 三维迷宫到 LBA 线性王国
  • 栈(Stack)的学习指南
  • 嵌入式学习笔记 - freeRTOS xTaskResumeAll( )函数解析
  • frida简介及环境搭建
  • 【数据结构】6. 时间与空间复杂度
  • AI-Sphere-Butler之如何启动AI全能管家教程(WSL测试环境下适用)
  • C++修炼:C++11(二)
  • GPT-5:不止于回答,AI学会了“思考”
  • MVC分层架构模式深入剖析
  • 2025年—Comfyui聚合插件:Comfyui-LayerStyle 超多实用功能 | 附各功能模型
  • 【R语言编程——数据调用】
  • SpringBoot-17-MyBatis动态SQL标签之常用标签
  • 【MySQL】10.事务管理
  • C++刷题:日期模拟(1)
  • 使用 C++/OpenCV 创建动态流星雨特效 (实时动画)
  • Linux 系统中的算法技巧与性能优化
  • 浅谈 React Hooks
  • 行为型设计模式之Interpreter(解释器)
  • 低功耗MQTT物联网架构Java实现揭秘
  • 八、【ESP32开发全栈指南:UDP客户端】