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

Vue3后台表单快速开发

目录

1 定义表单数据对象

2 定义校验规则

3 表单数据和校验规则绑定

3.1 表单数据和整体校验规则绑定

3.2 单项校验规则绑定

4 表单提交


        基于Vue3的后台管理系统往往需要很多的表单开发逻辑,但是这些逻辑具有同一个开发流程,这里对表单开发流程进行梳理,以登录表单为例:

1 定义表单数据对象

  // 登录表单const loginForm = reactive({phone: Cookies.get(PHONE) || '', //手机号password:Cookies.get(PASSWORD) === undefined? '': decryptHex(Cookies.get(PASSWORD)), // 密码code: '' // 验证码})

        表单数据对象可以使用reactive定义,也可以使用ref定义。重点是考虑需不需要默认填入表单的值,如果需要,就要在定义时赋值。

        这里是登录表单,如果有记住我选项,就需要向表单填入初始值。

2 定义校验规则

// 校验规则const loginRules = {phone: [{required: true,message: '⼿机号不能为空',trigger: 'blur'},{pattern: /^1[3-9]\d{9}$/,message: '⼿机号格式错误',trigger: 'blur'}],password: [{required: true,message: '密码不能为空',trigger: 'blur'},{min: 6,max: 20,message: '密码长度在6-20个字符之间',trigger: 'blur'}],code: [{required: true,message: '验证码不能为空',trigger: 'blur'},{min: 4,max: 4,message: '验证码长度必须为4位',trigger: 'blur'},{validator: validateCode,trigger: 'blur'}]}

        然后还需要定义数据的校验规则,字段需要和数据对象的属性对应。

        比如,手机号的两条规则分别是不能为空:required:true,正则表达式格式pattern。trigger表示校验的触发时机,blur即失去焦点(光标不在该表单项)时校验。

        密码校验除了非空,还设置长度范围。

        验证码校验除了非空,还设置验证码长度范围和自定义校验(validateCode函数,校验验证码是否正确)。

3 表单数据和校验规则绑定

3.1 表单数据和整体校验规则绑定

        在el-form表单中通过:model作动态数据绑定,通过:rules作校验规则的绑定,ref是用于获取表单整体校验对象的响应式引用,后续可以通过该响应式引用获取整个表单对象来作整体校验:

  // 登录表单的响应式引用对象(获取DOM元素的引用)const loginFormRef = ref(null)

3.2 单项校验规则绑定

        通过prop属性指明单项的校验规则,值必须和校验规则的校验项名称一致。v-model是作响应式数据的双向绑定。clearable是让输入框输入后可以点击叉号清空输入。

        通过单项校验规则绑定,就会在输入时一旦输入框失焦,就会触发单项校验规则的校验。

4 表单提交

        整体校验发生在用户点击登录时,因此需要为登录按钮绑定点击事件:

        当点击登录后,触发登录逻辑onLogin函数,就需要做整体校验ref,通过ref获取表单组件实例(如Element UI的el-form),调用其内置的validate方法,会自动遍历所有表单项的校验规则(如loginRules中定义的规则),并汇总结果。结果返回true或false:

        上述流程即为表单快速开发的一般流程,遵照上述流程,可以快速搭起表单功能的架子。

http://www.dtcms.com/a/457277.html

相关文章:

  • 前端技术栈 —— 创建React项目
  • 推荐一个 GitHub 开源项目信息卡片生成工具,支持Docker快速部署和API调用
  • 元宇宙的工业制造应用:重构生产、研发与供应链
  • 做美足网站违法吗北京网站建设哪家比较好
  • 2025版本的idea解决Git冲突
  • 深入浅出 HarmonyOS ArkTS:现代跨平台应用开发的语法基石
  • Spring boot 3.0整合RocketMQ不兼容的问题
  • 淮安制作企业网站莱芜金点子最新招聘
  • AI+机器人浪潮已至:是方舟还是巨浪?
  • Linux:虚拟世界的大门
  • 市桥网站建设培训数据库与网站建设
  • LangGraph学习笔记 (二)-10分钟搭建自己第一个Agent
  • Sutton:LLM 通往 AGI 的隐秘瓶颈
  • 吴恩达机器学习课程(PyTorch 适配)学习笔记大纲
  • 聊透自动驾驶系统:从“怎么跑”到“怎么聪明跑”
  • 网站建设属于什么职能wordpress建站教程
  • LeetCode 刷题【107. 二叉树的层序遍历 II、108. 将有序数组转换为二叉搜索树】
  • 宝塔服务器面板部署安装git通过第三方应用安装收费怎么办—bash: git: command not found解决方案-优雅草卓伊凡
  • 9. linux shell命令(6)Linux网络配置管理
  • 专做品质游的网站河东苏州网站建设
  • Spring的三级缓存原理 笔记251008
  • Coze源码分析-资源库-编辑数据库-后端源码-应用/领域/数据访问/基础设施层
  • 北京建设网站的公司兴田德润简介济南网站建设平台官网
  • 力扣 —— 动态规划(背包问题)
  • 基础微网站开发代理商wordpress图文模板
  • bind,apply,call
  • 最新ECCV最新大感受野的小波卷积
  • 小迪web自用笔记59
  • Docker 容器核心知识总结
  • GIS+VR地理信息虚拟现实XR MR AR