iview/view-design+vue2实现表单校验

1.iview/view-design介绍

iview是一款基于Vue.js的开源UI组件库,提供了丰富的组件和样式,支持响应式布局和多语言环境。它使用了最新的前端技术,如ES6、Webpack和SASS,让开发者可以快速构建高质量的Web应用程序。

View-design是一款基于Vue.js的开源UI组件库,它的设计理念是简单、易用、美观。它提供了众多的组件,如按钮、表单、弹窗、表格等,并且还支持多种主题和组件扩展,开发者可以根据自己的需求进行定制。

 俩者之间主要的区别是vue的版本不同,这里以vue2为例实现代码

2.安装以及配置

2.1创建初始化项目

首先使用vue脚手架创建一个新的项目

确保电脑已通过npm安装vue脚手架

若没有安装可通过npm快算安装到电脑

npm p @vue/cli -g
vue create project

基础项目搭建完成后开始配置项目

 2.2 下载view-design

 进入项目目录执行命令

npm i view-design --save

 --save表示放到生产环境依赖中,默认可不写

 查看package.json可已看到多出来一个依赖

 2.3vue引入并配置全局生效

在main.js中引入这几个文件

import iView from 'view-design'
import 'view-design/dist/styles/iview.css'

Vue.use(iView)

 最后在组件中引入即可使用

3Form表单配置和校验规则

3.1表单的基本结构

     <Form ref="form" :model="form" :rules="formRule" label-width="100">
          <FormItem label="用户名" prop="username">
            <Input v-model="form.username" placeholder="请输入用户名" clearable />
          </FormItem>
          <FormItem label="密码" prop="password">
            <Input type="password" v-model="form.password" placeholder="请输入密码" :password="true" />
          </FormItem>
          <FormItem label="生日" prop="birthday">
            <DatePicker v-model="form.birthday" aria-placeholder="生日"></DatePicker>
          </FormItem>
          <FormItem label="年龄" prop="age">
            <Input type="number" v-model="form.age" placeholder="请输入年龄" />
          </FormItem>
          <FormItem label="性别" prop="sex">
            <Select v-model="form.sex">
              <Option :value="0">女</Option>
              <Option :value="1">男</Option>
            </Select>
          </FormItem>
        </Form>
        <Row type="flex" justify="end">
          <Col :span="10">
          <Button @click="reset">重置</Button>
          <Button @click="submit" type="primary">确定</Button>
          </Col>
        </Row>

 3.2表单校验规则

3.2.1 默认表单校验规则

  username: [{ required: true, message: "用户名不能为空", trigger: 'blur' }],
        password: [{ required: true, message: "密码不能为空", trigger: 'blur' }, {
          min: 6,
          max: 12,
          message: "长度在6-12之间"
        }],

 required: true 表示该字段必填 通常只能校验一般字符串,数字,不包括数组等

message: "用户名不能为空"  表示该字段校验不通过的提示信息

trigger: 'blur' 表示该字段的触发方式是失去焦点

 3.2.2 自定义表单校验规则

  birthday: [{
          required: false,
          validator: (rule, value, callback) => {
            let today = new Date()
            if (value > today) {
              callback(new Error("出生年份不能比今天晚"))
            } else {
              callback()
            }
          }
        }]

validator:(rule,value,callback)=>{}

如果校验通过则直接调用回调函数,不通过则返回一个错误对象

3.2.3 多表单校验规则

表单校验规则支持多个校验方式,本身是一个数组,可放多个校验规则

     password: [
          { required: true, message: "密码不能为空", trigger: 'blur' },
          {
            min: 6,
            max: 12,
            message: "长度在6-12之间"
          }],


 3.2.4 表单校验方法

resetFields() 重置表单并清理错误显示

validate((validate)=>{}) 校验表单

  /**
     * 重置表单
     */
    reset() {
      this.$refs.form.resetFields()
    },
    /**
     * 提交方法
     */
    submit() {
      this.$refs.form.validate(validate => {
        if (validate) {
          // todo: 调用表单接口 
        } else {
          this.$Message.warning("请填写完整表单")
        }
      })
    }

4案例代码

<template>
  <div id="app">
    <div>
      <Card justify="center" style="width: 400px;align: center;">
        <Form ref="form" :model="form" :rules="formRule" label-width="100">
          <FormItem label="用户名" prop="username">
            <Input v-model="form.username" placeholder="请输入用户名" clearable />
          </FormItem>
          <FormItem label="密码" prop="password">
            <Input type="password" v-model="form.password" placeholder="请输入密码" :password="true" />
          </FormItem>
          <FormItem label="生日" prop="birthday">
            <DatePicker v-model="form.birthday" aria-placeholder="生日"></DatePicker>
          </FormItem>
          <FormItem label="年龄" prop="age">
            <Input type="number" v-model="form.age" placeholder="请输入年龄" />
          </FormItem>
          <FormItem label="性别" prop="sex">
            <Select v-model="form.sex">
              <Option :value="0">女</Option>
              <Option :value="1">男</Option>
            </Select>
          </FormItem>
        </Form>
        <Row type="flex" justify="end">
          <Col :span="10">
          <Button @click="reset">重置</Button>
          <Button @click="submit" type="primary">确定</Button>
          </Col>
        </Row>
      </Card>
    </div>
  </div>
</template>

<script>
import { Card, DatePicker, FormItem, Input, Option, Select } from 'view-design';

export default {
  name: 'App',
  components: {
    Card,
    FormItem,
    Input,
    DatePicker,
    Select,
    Option
  },
  data() {
    return {
      form: {
        username: "",
        password: "",
        birthday: "",
        sex: 0,
        age: 0
      },
      formRule: {
        username: [{ required: true, message: "用户名不能为空", trigger: 'blur' }],
        password: [
          { required: true, message: "密码不能为空", trigger: 'blur' },
          {
            min: 6,
            max: 12,
            message: "长度在6-12之间"
          }],
        birthday: [{
          required: false,
          validator: (rule, value, callback) => {
            let today = new Date()
            if (value > today) {
              callback(new Error("出生年份不能比今天晚"))
            } else {
              callback()
            }
          }
        }]
      },

    }
  },
  methods: {
    /**
     * 重置表单
     */
    reset() {
      this.$refs.form.resetFields()
    },
    /**
     * 提交方法
     */
    submit() {
      this.$refs.form.validate(validate => {
        if (validate) {
          // todo: 调用表单接口 
        } else {
          this.$Message.warning("请填写完整表单")
        }
      })
    }
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
  align-items: center;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/185423.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python+requests+pytest+allure自动化框架

1.核心库 requests request请求 openpyxl excel文件操作 loggin 日志 smtplib 发送邮件 configparser unittest.mock mock服务 2.目录结构 base utils testDatas conf testCases testReport logs 其他 2.1base base_path.py 存放绝对路径,dos命令或Jenkins执行…

渗透测试信息搜集

注&#xff1a;太简陋了&#xff0c;不忍直视 渗透测试信息收集 黑盒测试&#xff1a;给域名 灰盒测试&#xff1a;给域名、账户(或密码) 白盒测试&#xff1a;给域名、账户、密码 授权书 对安全公司进行授权 攻防演习 是对个人进行授权 渗透测试&#xff1a;&#xff0…

2023快速成为接口测试高手:实用指南!

大量线上BUG表明&#xff0c;对接口进行测试可以有效提升产品质量&#xff0c;暴露手工测试时难以发现的问题&#xff0c;同时也能缩短测试周期&#xff0c;提升测试效率。但在实际执行过程中&#xff0c;接口测试被很多同学打上了“上手难&#xff0c;门槛高”的标签。 本文旨…

游戏测试大揭秘,帮你轻松过关!

游戏测试可以看作是软件测试的一个分支&#xff0c;黑盒测试最基本的要求是会玩游戏。小公司会要求测试能力更加全面的员工&#xff0c;其中除了功能测试还要会性能测试&#xff0c;兼容测试&#xff0c;弱网测试&#xff0c;自动化测试等。 游戏测试是游戏开发过程中必不可少…

系列九、声明式事务(xml方式)

一、概述 声明式事务(declarative transaction management)是Spring提供的对程序事务管理的一种方式&#xff0c;Spring的声明式事务顾名思义就是采用声明的方式来处理事务。这里所说的声明&#xff0c;是指在配置文件中声明&#xff0c;用在Spring配置文件中声明式的处理事务来…

stack和queue

目录 stack 介绍 头文件 简单使用 constructor empty size top push pop swap 使用 queue 介绍 头文件 简单使用 constructor empty size front back push pop swap 使用 stack 介绍 栈 先进后出 头文件 #include <stack> 简单使用 constru…

ELK+kafka+filebeat企业内部日志分析系统

1、组件介绍 1、Elasticsearch&#xff1a; 是一个基于Lucene的搜索服务器。提供搜集、分析、存储数据三大功能。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口。Elasticsearch是用Java开发的&#xff0c;并作为Apache许可条款下的开放源码发布…

Fiddler 无法抓包手机 https 报文的解决方案来啦!!

解决手机https无法抓包的问题 当你测试App的时候&#xff0c;想要通过Fiddler/Charles等工具抓包看下https请求的数据情况&#xff0c;发现大部分的App都提示网络异常/无数据等等信息 这时候怎么解决呢&#xff1f; 以软件测试面试提刷题APP为例&#xff1a; Fiddler上的显示…

微信 H5 中实现客服功能的几种方式

微信 H5 中实现客服功能的几种方式 本文主要针对微信网页 H5 中的客服功能 一、使用微信客服接口及对话界面 服务号消息客服&#xff0c;当用户和公众号产生特定动作的交互时&#xff08;用户发送信息/点击自定义菜单/关注公众号/扫描二维码&#xff09;&#xff0c;微信将会…

rancher2.6 docker版本部署

1. 拉取镜像 docker pull rancher/rancher:v2.6.5 注&#xff1a; 上面命令中rancher的版本v2.6.5&#xff0c;仅仅是我因为我们环境中使用的k8s都是 1.20.1 到1.23.6 之间的版本。rancher支持的k8s版本&#xff0c;在github上查看&#xff1a;Release Release v2.6.5 ranche…

2048 数字合成大作战,Android小游戏开发

A. 项目描述 《2048》是一款经典的益智小游戏&#xff0c;它的目标是通过合并相同数字来达到2048这个最高分。 该游戏规则简单&#xff0c;玩家需要通过滑动屏幕来移动方块&#xff0c;相同数字的方块会合并成一个新的数字方块。这样的简单操作让人可以轻松上手。 《2048》小…

短视频ai剪辑矩阵分发saas系统源头技术开发

抖音账号矩阵系统是基于抖音开放平台研发的用于管理和运营多个抖音账号的平台。它可以帮助用户管理账号、发布内容、营销推广、分析数据等多项任务&#xff0c;从而提高账号的曝光度和影响力。 具体来说&#xff0c;抖音账号矩阵系统可以实现以下功能&#xff1a; 1.多账号多…

笔尖笔帽检测4:C++实现笔尖笔帽检测算法(含源码 可是实时检测)

笔尖笔帽检测4&#xff1a;C实现笔尖笔帽检测算法(含源码 可是实时检测) 目录 笔尖笔帽检测4&#xff1a;C实现笔尖笔帽检测算法(含源码 可是实时检测) 1.项目介绍 2.笔尖笔帽关键点检测方法 (1)Top-Down(自上而下)方法 (2)Bottom-Up(自下而上)方法&#xff1a; 3.笔尖笔…

举个栗子!Quick BI 技巧(4):创建面积图

面积图又叫区域图&#xff0c;是在折线图的基础之上形成的, 它将折线图中折线与自变量坐标轴之间的区域使用颜色或者纹理填充&#xff0c;这样一个填充区域我们叫做面积&#xff0c;颜色的填充也可以更好的突出趋势信息。 有数据粉好奇如何使用 Quick BI 来制作面积图&#xf…

网络安全工程师就业前景怎么样?

网络安全工程师的就业前景整体来看是不错的&#xff0c;近些年的岗位需求总体呈现上升的趋势&#xff0c;可以说只要有互联网的存在&#xff0c;就会有网络安全工程师的一席之地。不过现在企业更缺乏资深技术人才&#xff0c;如果只学会了皮毛&#xff0c;可能不会很好就业。 网…

「可移动工具车」物料管理的得力助手

随着工业制造企业不断发展&#xff0c;仓储的运营变得越来越重要&#xff0c;物料高效管理也迎来了新的挑战&#xff0c;工厂物料管理直接影响着生产效率和成本控制&#xff0c;不合理的物料管理可能导致物料溢出、过度库存、损耗增加等问题&#xff0c;进而影响企业的整体竞争…

OpenStack云计算平台-块存储服务

目录 一、块存储服务概览 二、安装并配置控制节点 1、先决条件 2、安全并配置组件 3、配置计算节点以使用块设备存储 4、完成安装 三、安装并配置一个存储节点 1、先决条件 2、安全并配置组件 3、完成安装 ​四、验证操作 一、块存储服务概览 OpenStack块存储服务(c…

了解5G安全标准,看这一篇就够了

随着移动通信系统在社会生活中的使用越来越广泛&#xff0c;特别是5G进一步以企业级应用作为核心应用场景&#xff0c;安全成为了包括5G在内的移动通信系统不可忽视的因素。本文梳理了全球主流移动通信标准化组织在安全方面的标准制定&#xff0c;从而可以快速了解5G协议层面对…

WorldWind Android上加载白模数据

这篇文章介绍下如何加载白模数据。这个白模数据的格式是shapefile格式的文件。白模数据拷贝到手机本地&#xff0c;然后读取白模数据&#xff0c;进行加载展示。 worldwind android本身是不支持加载白模数据的&#xff0c;但是可以根据现有提供的加载Polygons的方式&#xff0c…

5.1 Windows驱动开发:判断驱动加载状态

在驱动开发中我们有时需要得到驱动自身是否被加载成功的状态&#xff0c;这个功能看似没啥用实际上在某些特殊场景中还是需要的&#xff0c;如下代码实现了判断当前驱动是否加载成功&#xff0c;如果加载成功, 则输出该驱动的详细路径信息。 该功能实现的核心函数是NtQuerySys…