iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue3实现H5表单验证组件的示例
  • 958
分享到

vue3实现H5表单验证组件的示例

vue3H5表单验证vue3表单验证 2023-05-16 11:05:42 958人浏览 泡泡鱼
摘要

目录效果图描述实现思路与element-ui表单组件差异非uni-app平台的移植效果图 描述 基于vue.js,不依赖其他插件或库实现;基础功能使用保持和 element-ui

效果图

描述

基于vue.js,不依赖其他插件或库实现;基础功能使用保持和 element-ui 一致,内部实现做了一些移动端差异的调整。

当前构建平台使用 uni-app 官方脚手架构建,因为当下移动端大多情况就h5微信小程序两种,所以一套代码跑多端十分适合技术选型。

功能预览

代码地址 Vue2

实现思路

核心api:使用 provide 和 inject ,对应<fORM><form-item>

  • <form>组件中,内部用一个变量(数组)去将所有<form-item>实例储存起来,同时把要传递的数据通过provide暴露出去;<form-item>组件则在内部用inject去接收父组件提供过来的数据,最后把自身的属性和方法提交到父组件去。

  • <form>中要做的事情就只有监听绑定的数据,然后做调用对应<form-item>的各种验证方法;所以任何的验证状态都写在了<form-item>中,包括样式的展示;由于可以拿到父组件绑定的数据,对于一些常见样式设置自然就可以用computed去优先拿取自身组件prop值或者父组件绑定的prop值;对应的,通过父组件绑定的表单数据,就可以和自身prop去验证当前项了,最后由父组件去调用对应方法即可,当然,自身组件也可以调用。

  • 因为vue3中移除了自定义派发事件$on$off$emit,所以这里改用uni.$onuni.$offuni.$emit来代替;不同的是,这个事件派发机制是全局的,不是跟随组件唯一性,所以在添加、移除事件时,需要在事件名称设置一个唯一值使用;这里我在<form>组件中定义一个变量,每次调用时都累加1,然后设为事件名称再传递到<form-item>内部,这样就可以保证<form><form-item>的确定性了。

与element-ui表单组件差异

  • 表单验证不再设置输入框和任何表单表单的样式,而是通过自定义修改样式去显示验证提示;这十分有利于移动端穷出不尽的UI设计稿的变化,例如同一个表单,有两种不同样式的输入框;同时不影响和其他样式库的使用,因为表单验证的<form-item>不会影响到插槽内的任何元素。

  • 表单校验数据选项只保留4个字段(见下面),因为移除了对表单组件的验证状态,所以trigger这个事件设置也不需要了;pattern则换成了reg,注意的是,在微信小程序中,任何组件的传参都会被过滤剩下基础JSON类型,所以这个reg在小程序环境中使用时,要在末尾加上.toString()validator同理。


export interface TheFormRulesItem {
  
  required?: boolean
  
  message?: string
  
  type?: "number" | "array"
  
  reg?: string // | RegExp
}


export type TheFormRules = { [key: string]: Array<TheFormRulesItem> };
  • 不知道大家在以往的长表单验证中,有没有遇到过点击验证之后,因为页面过长,所以不知道那个表单项校验不通过,从而需要翻阅定位到对应项;为了优化以往表单验证的体验,这里加入了验证之后,滚动到对应位置的操作,更加符合移动端的用户体验。

  • 表单验证的触发机制:都知道element-ui的触发机制是通过指定trigger来选择触发的时机,那这里我去掉之后,就意味着没有这些操作去触发了;而我选择的是主动调用validatevalidateField这些验证方法时去触发实时验证,当验证不通过时,把不通过的用变量储存起来,然后每次数据变动时去校验,等到验证通过了,则移除实时验证项;这样相比于element-ui绑定事件实时去验证会节省很多代码调用和运行的机制,同时代码可以做到更高校和精简。

非uni-app平台的移植

除了更换标签之外,几乎不用做任何的修改就可以复制粘贴到其他项目中去,唯一要修改的就是自定义事件uni.$onuni.$offuni.$emit;这里可以自己实现,又或者用其他库去代替,js实现自定义事件派发代码如下:

function moduleEvent() {
  
  const eventInfo = {};

  return {
    
    on(name, fn) {
      if (!eventInfo.hasOwnProperty(name)) {
        eventInfo[name] = [];
      }
      if (!eventInfo[name].some(item => item === fn)) {
        eventInfo[name].push(fn);
      }
    },

    
    off(name, fn) {
      const fns = eventInfo[name];
      if (fns && fns.length > 0 && fn) {
        for (let i = 0; i < fns.length; i++) {
          const item = fns[i];
          if (item === fn) {
            fns.splice(i, 1);
            break;
          }
        }
      } else {
        console.log("[moduleEvent] => 没有要解绑的事件");
      }
    },

    
    dispatch(name, params) {
      const fns = eventInfo[name];
      if (fns && fns.length > 0) {
        for (let i = 0; i < fns.length; i++) {
          const fn = fns[i];
          fn(params);
        }
      } else {
        console.log("[moduleEvent] => 没有要执行的事件");
      }
    },
  }
}

调用moduleEvent()之后,用变量调用即可,注意当前变量要作为内存常驻使用;

到此这篇关于vue3实现H5表单验证组件的示例的文章就介绍到这了,更多相关vue3 H5表单验证组件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: vue3实现H5表单验证组件的示例

本文链接: https://www.lsjlt.com/news/209712.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue3实现H5表单验证组件的示例
    目录效果图描述实现思路与element-ui表单组件差异非uni-app平台的移植效果图 描述 基于vue.js,不依赖其他插件或库实现;基础功能使用保持和 element-ui ...
    99+
    2023-05-16
    vue3 H5表单验证 vue3 表单验证
  • vue3 + async-validator实现表单验证的示例代码
    目录vue3 表单验证前言搭建vue3的项目vue3的表单验证1.表单代码2.添加验证2-1. 初始化2-2. 多个表单的验证2-3. Promise方式验证2-4. 正则验证2-5...
    99+
    2024-04-02
  • JavaScript实现表单验证示例
    HTML表单(form)通常用于收集用户信息,例如姓名,电子邮件地址,位置,年龄等。 但是很可能某些用户可能不会输入您期望的数据。HTML表单验证可以通过JavaScript完成。 ...
    99+
    2024-04-02
  • Vue3实现登录表单验证功能
    目录一.实现思路与效果图二.实现具体过程三.完整代码与效果图一.实现思路与效果图 使用async-validator 插件,阿里出品的 antd 和 ElementUI 组件库中表单...
    99+
    2024-04-02
  • vue3+async-validator如何实现表单验证
    本篇内容主要讲解“vue3+async-validator如何实现表单验证”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue3+async-validator如何实现表单验证”吧!搭建vue3...
    99+
    2023-07-02
  • JS实现表单验证案例
    本文实例为大家分享了JS实现表单验证案例的具体代码,供大家参考,具体内容如下 1.当输入框失去焦点时,验证输入内容是否符合要求 (1)获取表单输入框(2)绑定 onblur 事件(...
    99+
    2024-04-02
  • JavaScript实现表单验证案例
    本文实例为大家分享了JavaScript实现表单验证的具体代码,供大家参考,具体内容如下 需求 有如下注册页面,对表单进行校验,如果输入的用户名、密码、手机号符合规则,则允许提交;...
    99+
    2024-04-02
  • vue3+vite3+typescript实现验证码功能及表单验证效果
    目录验证码组件父组件表单验证最终效果验证码组件 <template> <div class="captcha" style="display: flex;"&...
    99+
    2023-05-16
    vue3+vite3+typescript验证码 vue3+vite3+typescript表单验证
  • JavaScript实现简单表单验证案例
    本文实例为大家分享了JavaScript实现简单表单验证的具体代码,供大家参考,具体内容如下 一.需求分析 要实现的功能: 1.出现如下图所示的内容:(HTML和CSS完成) 2....
    99+
    2024-04-02
  • Vue3+ElementPlus表单组件的封装实例
    目录form文件夹FormItem.tsx在页面中引用总结在系统中,表单作为用户与后端交互的重要传递组件使用频率极高,故对其进行封装是必然的,也是一个编写规范代码的前端程序员必须做的...
    99+
    2024-04-02
  • JavaScript表单验证示例详解
    HTML表单(form)通常用于收集用户信息,例如姓名,电子邮件地址,位置,年龄等。 但是很可能某些用户可能不会输入您期望的数据。HTML表单验证可以通过JavaScript完成。 ...
    99+
    2024-04-02
  • jQuery实现表单验证
    使用jQuery实现表单验证,供大家参考,具体内容如下 register.html <!DOCTYPE html> <html lang="en"> &l...
    99+
    2024-04-02
  • JavaScript实现表单验证
    目录一、JavaScript 表单验证1、数据验证2、约束验证1、约束验证 HTML 输入属性2、约束验证 CSS 伪类选择器二、JavaScript 验证 API1、checkVa...
    99+
    2024-04-02
  • vue组件表单数据回显验证及提交的示例分析
    这篇文章主要介绍vue组件表单数据回显验证及提交的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!最近项目需要到vue开发单页面,所以就研究一下表单数据的回显,验证及提交如何用...
    99+
    2024-04-02
  • Ajax怎么实现带提示的验证表单
    这篇文章主要介绍“Ajax怎么实现带提示的验证表单”,在日常操作中,相信很多人在Ajax怎么实现带提示的验证表单问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ajax怎么实现...
    99+
    2024-04-02
  • JavaScript表单验证实例分析
    这篇文章主要介绍了JavaScript表单验证实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript表单验证实例分析文章都会有所收获,下面我们一起来看看吧。...
    99+
    2024-04-02
  • Vue3实现Message消息组件示例
    目录组件设计 定义最终的组件 API 定义组件结构 模板和样式 模板 Template 消息图标 样式 组件脚本 创建组件实例 1、创建包裹容器,并设置外层的 Class 属性 2、...
    99+
    2024-04-02
  • PHP表单验证的具体实现
    这篇文章主要讲解了“PHP表单验证的具体实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP表单验证的具体实现”吧!PHP 表单验证表单验证我们应该尽可能的对用户的输入进行验证(通过客户...
    99+
    2023-06-04
  • JS中表单提交验证的示例分析
    这篇文章将为大家详细讲解有关JS中表单提交验证的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在进行表单提交时,需要对输入框和文本域等的value的合理性进行验证...
    99+
    2024-04-02
  • layui如何实现表单验证
    这篇文章主要介绍layui如何实现表单验证,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在网上看到很多validform和layer配合的验证方式,但是觉得写的不好,不清不楚的,于是...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作