validate 注册页的表单数据校验实现详解

目录
  • 1.注册页是什么
  • 2.为什么需要注册页
  • 3.注册页如何实现
    • 3.1分析业务需求
    • 3.2获取数据 v-model双向绑定
    • 3.3校验数据
    • 3.4method中的发送数据
    • 3.5处理数据
  • 4总结

1.注册页是什么

当我们使用一个从未使用过的网站时,想要注册账号,点击注册账号时看到的网页就是注册页注册页例子如下:

我们看到以下的注册页中,有两大类信息:

  • 第一大类是用户信息类,

包括用户名,密码和email,他们都有自己的 取值规则 ,例如用户名显示不得小于3个字符

  • 第二大类是验证码类,一般有两种,

一种是短信或邮箱验证,这是为了绑定手机号或邮箱,

还有一种就下图中的真人验证,为了避免机器人恶意访问信息量过大,通过验证计算题或者识别字母的方式来确定是真人访问

2.为什么需要注册页

目的:

  • 注册页的目的是让用户注册账号
  • 用户通过账号密码来登录网站
  • 网站记录用户的账户密码,建立一个记录每一个用户信息的数据库

数据校验

  • 用户名和密码都有一定的命名和设定规则
  • 为了避免不符合规则的命名和密码发送到服务器,造成服务器压力过大
  • 我们需要在前端页面对数据进行初筛,符合规则要求的才会被发送到服务器
  • 服务器再进行用户名是否重复的校验

3.注册页如何实现

本次所使用的技术栈:vue2.0,axios,element-ui,vuex,vue-router
需要实现的界面如下:

3.1分析业务需求

  • 1.获取数据: v-model双向绑定三个数据,分别是username.password,repassword
  • 2.校验数据
    (1)在data中添加校验规则
    (2)在模板中配置规则
    (3)处理最终结果
  • 3.发送数据: 通过axios发送数据
  • 4.处理数据: 判断axios返回的code值,来处理数据

初始html模板如下

小贴士:

input框的前置icon图标通过prefix-icon="el-icon-user"实现

如果想要实现点击小眼睛实现密码显示和保密.可以在el-input框便签加上show-password实现

<!-- 注册的表单区域 -->
  <el-form>
    <!-- 用户名 -->
    <el-form-item>
      <el-input placeholder="请输入用户名" prefix-icon="el-icon-user"></el-input>
    </el-form-item>
    <!-- 密码 -->
    <el-form-item>
      <el-input type="password" prefix-icon="el-icon-lock" placeholder="请输入密码"></el-input>
    </el-form-item>
    <!-- 确认密码 -->
    <el-form-item>
      <el-input type="password" prefix-icon="el-icon-lock" placeholder="请再次确认密码"></el-input>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" class="btn-reg">注册</el-button>
      <el-link type="info" @click="$router.push('/login')">去登录</el-link>
    </el-form-item>
  </el-form>

3.2获取数据 v-model双向绑定

首先在data中定义表单数据对象,包含用户名,密码和第二次密码

 data() {
    return {
      form: {
        username: "",
        password: "",
        repassword: "",
      },
      }

然后在表单的三个input框中使用v-model绑定上面的三个数据

 <!-- 注册的表单区域 -->
      <el-form >
        <el-form-item >
          <el-input
            placeholder="请输入用户名"
            prefix-icon="el-icon-user"
            v-model="form.username"
          ></el-input>
        </el-form-item>
        <el-form-item>
          <el-input
            placeholder="请输入密码"
            prefix-icon="el-icon-lock"
            v-model="form.password"
            show-password
          ></el-input>
        </el-form-item>
        <el-form-item >
          <el-input
            placeholder="请输入再次确认密码"
            prefix-icon="el-icon-lock"
            v-model="form.repassword"
            show-password
          ></el-input>
        </el-form-item>
      </el-form>

3.3校验数据

首先在data中定义数据校验规则

formRules: {
        username: [
          { required: true, message: "用户名不能为空", trigger: "blur" },
          {
            pattern: /^[a-zA-Z0-9]{1,10}$/,
            message: "用户名必须是1-10位的字母数字",
            trigger: "blur",
          },
        ],
        password: [
          { required: true, message: "密码不能为空", trigger: "blur" },
          {
            pattern: /^\S{6,15}$/,
            message: "密码必须是6-15位的非空字符",
            trigger: "blur",
          },
        ],
        repassword: [
          { required: true, message: "请再次确认密码", trigger: "blur" },
          {
            pattern: /^\S{6,15}$/,
            message: "密码必须是6-15位的非空字符",
            trigger: "blur",
          },
          // 使用 validator 属性,来应用自定义的校验规则
          {
            validator: (rule, value, callback) => {
              // 形参中的 value 表示被绑定的元素的值
              if (value !== this.form.password) {
                // 校验失败
                callback(new Error("两次密码不一致!"));
              } else {
                // 校验成功
                callback();
              }
            },
            trigger: "blur",
          },
        ],
      },

然后对html中的form部分标签中增加内容

  • 在el-form中:model绑定form,:rules绑定formRules,
  • 在el-form-item中prop绑定form中的数据,注意这里不需要写form.username,只需要写username
<!-- 注册的表单区域 -->
      <el-form :model="form" :rules="formRules" ref="formRef">
        <el-form-item prop="username">
          <el-input
            placeholder="请输入用户名"
            prefix-icon="el-icon-user"
            v-model="form.username"
          ></el-input>
        </el-form-item>
        <el-form-item prop="password">
          <el-input
            placeholder="请输入密码"
            prefix-icon="el-icon-lock"
            v-model="form.password"
            show-password
          ></el-input>
        </el-form-item>
        <el-form-item prop="repassword">
          <el-input
            placeholder="请输入再次确认密码"
            prefix-icon="el-icon-lock"
            v-model="form.repassword"
            show-password
          ></el-input>
        </el-form-item>
      </el-form>

3.4method中的发送数据

首先给html中的注册按钮绑定一个点击事件@click='doRegister'

<el-button type="primary" style="width: 100%" @click="doRegister">注册</el-button>

然后在methods里定义事件doRegister:

  • 通过$refs获得表单的dom元素
  • 使用validate对数据进行校验,如果成功发送ajax
  • 这里使用了promise的语法糖async-await,来实现同步的写法实现异步的效果
// 2.方法
  methods: {
    // 2.1注册
    doRegister() {
      // (1).检查表单时是否校验通过
      this.$refs.formRef.validate(async (valid) => {
        if (valid) {
          // (2).校验通过,发送ajax
          const { data: res } = await this.$axios.post("/api/reg", {
            ...this.form,
          });
        }
      });
    },
  },

3.5处理数据

根据ajax返回的数据中的code来判断,是注册成功还是注册失败

(这里要通过后端提供的接口文档来确定什么code是失败,什么code是成功)
我这里code为0是成功,1是失败

  • 注册成功跳转登录页, this.$router.push("/login");通过路由实现
  • 弹出成功信息框: this.$message.success(res.message);
  • 错误则弹出失败信息框:this.$message.error(res.message)
     // 2.方法
  methods: {
    // 2.1注册
    doRegister() {
      // (1).检查表单时是否校验通过
      this.$refs.formRef.validate(async (valid) => {
        if (valid) {
          // (2).校验通过,发送ajax
          const { data: res } = await this.$axios.post("/api/reg", {
            ...this.form,
          });
          // (3).处理数据
          if (res.code === 0) {
            // 跳转登录页
            this.$router.push("/login");
            // 弹出信息框
            this.$message.success(res.message);
          } else {
            this.$message.error(res.message);
          }
        }
      });
    },
  },

4总结

业务思路

1.获取数据

2.校验数据

3.发送请求

4.处理响应数据

以上就是validate 注册页的表单数据校验实现详解的详细内容,更多关于validate 注册页表单数据校验的资料请关注我们其它相关文章!

(0)

相关推荐

  • Vee-validate 父组件获取子组件表单校验结果的实例代码

    vee-validate 是为 Vue.js 量身打造的表单校验框架,允许您校验输入的内容并显示对应的错误提示信息.它内置了很多常见的校验规则,可以组合使用多种校验规则,大部分场景只需要配置就能实现开箱即用,还支持自定义正则表达式.而且支持 40 多种语言,对本地化.多语言支持非常友好. 国内饿了么团队开源项目 Element UI 就用到了 vee-validate. vee-validate官网:https://baianat.github.io/vee-validate/ 使用方法 可查看

  • Struts2中validate数据校验的两种方法详解附Struts2常用校验器

     1.Action中的validate()方法 Struts2提供了一个Validateable接口,这个接口中只存在validate()方法,实现这个接口的类可直接被Struts2调用,ActionSupport类就实现了Vadidateable接口,但他的validate()方法是一个空方法,需要我们来重写. validate()方法会在execute()方法执行前执行,仅当数据校验正确,才执行execute()方法, 如错误则将错误添加到fieldErrors域中,如果定义的Action中

  • Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验

    vee-validate 是为 Vue.js 量身打造的表单校验框架,允许您校验输入的内容并显示对应的错误提示信息.它内置了很多常见的校验规则,可以组合使用多种校验规则,大部分场景只需要配置就能实现开箱即用,还支持自定义正则表达式.而且支持 40 多种语言,对本地化.多语言支持非常友好. 国内饿了么团队开源项目 Element UI 就用到了 vee-validate . vee-validate 官网:https://baianat.github.io/vee-validate/ 1. 安装

  • 使用validate.js实现表单数据提交前的验证方法

    现在是学的ASP.NET,关于表单验证,目前知道的,除了以前那种傻瓜式的每个表单选项都用一个函数去验证之外,有两种方法是比较方便的,今天先介绍一下第一种,在前端实现表单验证的方法--基于validate.js的表单验证方法. 注意哟,以下我都用截图的方式挂出代码,然后最后会把完整代码贴出来,提供复制粘贴,小伙伴不要急着敲哦! 1.下载和引入validate.js 首先,我们需要下载一份validate.js文件,这个文件可以去JQuery官网或者csdn等网站下载. 下载好之后,新建一个html

  • EasyValidate优雅地校验提交数据完整性

    前言 在日常的Android开发中,我们在做登录注册等带有提示性输入校验的时候.常常会写样子写代码: 然后你会发现每一次写带有提交信息页面的时候都不得不去编写这种千篇一律的代码,那....有没有一种更加优雅得实现方式呢?So,我就是在这种情况下去编写了一个项目,希望自己能把更多的注意力放在其他地方.(PS:比如偷懒) 一.如何优雅地实现代码 说到用优雅得方式写代码,不得不提AnnotationProcessor,一个用于编译时扫描和处理注解工具.它能很好得帮我们处理一些具有规律的,重复性的代码劳

  • vue中vee validate表单校验的几种基本使用

    今天主要记录一下用vee-validate来进行表单校验的几个基本使用.包括最基础的必填和长度校验:异步请求服务的校验(重名校验),还有延迟校验.如何引入等就不在这里赘述了,直接进入主题. 1.必填和长度校验 直接采用v-validate属性进行配置,不同的校验采用 '|' 隔开.是否有报错根据 errors.has('userName') 进行判断,'userName'对应的是表单的name属性的值. errors.first('userName)会展示表单校验中第一个错误信息. <el-co

  • validate 注册页的表单数据校验实现详解

    目录 1.注册页是什么 2.为什么需要注册页 3.注册页如何实现 3.1分析业务需求 3.2获取数据 v-model双向绑定 3.3校验数据 3.4method中的发送数据 3.5处理数据 4总结 1.注册页是什么 当我们使用一个从未使用过的网站时,想要注册账号,点击注册账号时看到的网页就是注册页注册页例子如下: 我们看到以下的注册页中,有两大类信息: 第一大类是用户信息类, 包括用户名,密码和email,他们都有自己的 取值规则 ,例如用户名显示不得小于3个字符 第二大类是验证码类,一般有两种

  • javascript验证form表单数据的案例详解

    直接po截图和代码 下面是CheckFormDemo.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>验证表单的案例</title> <link rel="stylesheet" type="text/css" href="../css/body.css" rel=&q

  • Springboot接收 Form 表单数据的示例详解

    目录 一.接收 Form 表单数据 1,基本的接收方法 2,参数没有传递的情况 3,使用 map 来接收参数 4,接收一个数组 5,使用对象来接收参数 6,使用对象接收时指定参数前缀 二.接收字符串文本数据 三.接收 JSON 数据 1,使用 Map 来接收数据 2,使用 Bean 对象来接收数据 一.接收 Form 表单数据 1,基本的接收方法 (1)下面样例Controller接收form-data格式的POST数据: import org.springframework.web.bind.

  • js前端表单数据处理表单数据校验

    目录 前言 1.数据处理 1.1 场景1 :过滤我不要的数据 1.2 场景2:只提取我要的数据 1.3 场景3 :覆盖数据 1.4 场景4 :字段映射 1.5 场景5 : 数据映射 1.6 场景6: 数据合并 2.表单校验 2.1 简单版的单字段检查 2.2 简单版的多字段检查 2.3 Iview 组件库 form表单组件的校验实现 2.4 element 组件库 ElForm表单组件的校验实现 2.5 常见校验规则 前言 这段时间一直在搞to B方向中后台的项目,表单接触的频率会比较多,就突发

  • 基于SpringBoot服务端表单数据校验的实现方式

    SpringBoot服务端表单数据校验 (SpringBoot高级) 一.实现添加用户功能 1 创建项目 2 修改POM文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http:

  • hibernate-validator后端表单数据校验的使用示例详解

    目录 hibernate-validator后端表单数据校验的使用 1.hibernate-validator介绍 2.hibernate-validator常用注解 3. hibernate-validator入门案例 3.1.第一步:创建maven工程hibernate-validator_demo并配置pom.xml文件 3.2.创建实体类 3.3.创建UserController 3.4.创建项目启动类 3.5.创建application.yml配置文件 4.启动项目测试 4.1.删除控

  • Struts中使用validate()输入校验方法详解

    1.在ActionSupport中有一个validate()方法,这个方法是验证方法,它会在execute()方法执行之前执行,所以能够起到很好的验证的作用. @Override //重写Action中的validate()方法 public void validate() { if(null==this.username||this.username.length()<4||this.username.length()>6){ this.addActionError("userna

  • SpringBoot实现滑块验证码验证登陆校验功能详解

    目录 前言 一.实现效果 二.实现思路 三.实现步骤 1. 后端 java 代码 1.1 新建一个拼图验证码类 1.2 新建一个拼图验证码工具类 1.3 新建一个 service 类 1.4 新建一个 controller 类 1.5 登录接口 2. 前端 vue 代码 2.1 新建一个 sliderVerify 组件 2.2 在登录页使用滑块组件 前言 验证码一直是各类网站登录和注册的一种校验方式,是用来防止有人恶意使用脚本批量进行操作从而设置的一种安全保护方式.随着近几年技术的发展,人们对于

  • 微信小程序常用表单组件的使用详解

    目录 1.常用表单组件 1.1button 1.2checkbox 1.3input 1.4label 1.5form 1.6radio 1.7slider 1.8switch 1.9textarea 2.实训小案例–问卷调查 1.常用表单组件 1.1 button <button>为按钮组件,是常用的表单组件之一,用于事件的触发以及表单的提交.其属性表如下所示. 代码示例: <view class="demo-box"> <view class=&quo

  • JavaWeb实现表单提交的示例详解

    目录 register.html RegisterServlet.java 修改web.xml,添加如下code 重新配置服务器 先点击左侧图标 再点击Redeploy,重新部署Tomcat服务器 访问表单页面 register.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <ht

随机推荐