这篇文章时关于如何使用iview的form表单校验。主要学习如何使用form校验(以校验文字长度为例),以及如何动态添加校验规则和异步校验。

1.为需要校验的表单添加form标签

<!--注意: ref/rules/model/prop等属性是必须的-->
<Form res="foemRef" :rules="formRules" :model="formData" v-if="liveNode">
<Row>
<!--正常校验-->
<Col>
<FormItem prop="name">
<Input v-model="formData.name"></Input>
</FormItem>
</Col>
<!--动态校验-->
<Col v-if="flag">
<FormItem prop="age">
<Input v-model="formData.age"></Input>
</FormItem>
</Col>
<!--异步校验-->
<Col>
<FormItem prop="asyName">
<Input v-model="formData.asyName"></Input>
</FormItem>
</Col>
</Row>
</Form>

2.添加校验规则

formRules: {
name: [
{required: true, message: "必输项不能为空", trigger: 'blur'},
{validator:(rule, value, cb)=>{lenValid(value, 30, cb)}, trigger: 'blur'}
],
age:[], // 注意因为age是根据条件判断是否必输,先留个坑
asyName: [ // 异步校验,使用change触发,即使不改变输入数据也会在提交数据的时候自动校验一次
{validator:(rule, value, cb)=>{asyValid(value, cb)}, trigger: 'change'}
]
}

3.校验方法

// 校验输入的字符长度
function lenValid(str, num, cb){
if(str){
let len = getLen(str)
if(len > num){
return cb(new Error('Too Long...'))
}
}
cb()
} // 获取字符长度
function getLen(str){
let len = 0
if(str){
str = str + '' // to string
for(let i=0; i<str.length; i++){
let c = str.charCodeAt(i)
if((c >= 0x0001 && c <= 0x007e) || (0xff60 < = c && c <= 0xff9f)){
len++ // 单字节
}else{
len += 3 // 汉字
}
}
}
return len
}

4.动态添加校验规则

有时候需要动态切换一个输入框,比如:上面的age字段,显示的时候是必输项,隐藏的时候是非必输的,这个时候需要动态的修改校验规则

this.liveNode = flase // 先抹去Form,等校验规则修改后在重新渲染
if(this.flag){
this.formRules.age.unShift({required: true, message: '必输项'})
}else{
if(this.formRules.age.length > 0){
this.formRules.age.shift()
}
}
this.liveNode = true // 重新渲染Form

5.异步校验

有时候输入的内容需要到后台异步校验

// 异步校验 - 成败都要有回调函数,校验失败抛出异常
function asyValid(value, cb){
let param = {asyName: value} // 将需要校验的值作为参数
$http(url,action,param,(res)=>{
cb()
},(err)=>{
cb(new Error(err.data.message))
})
}

vue+iview的form表单校验总结的更多相关文章

  1. 应用二:Vue之ElementUI Form表单校验

    (注:本文适用于有一定Vue基础或开发经验的读者,文章就知识点的讲解不一定全面,但却是开发过程中很实用的)   表单校验是前端开发过程中最常用到的功能之一,根据个人的工作经验总结在此对表单校验功能的基 ...

  2. iview form表单数值类型校验「iview自定义form表单校验器」

    摘录iview表单验证 Form 组件基于 sync-validator 实现的数据验证,给 Form 设置属性 rules,同时给需要验证的 FormItem 设置属性 prop 指向对应字段即可. ...

  3. vue自定义轻量级form表单校验

    遇到了form表单提交的需求,找了vue的组件觉得不够灵活,有时间自己写了一个. 调用方法 全局引入注册: import va from 'global/js/va' va.install(Vue); ...

  4. React-Antd4的Form表单校验

    之前很少用react做项目,最近入职新公司,用的react,在自己的摸索过程中,慢慢会记录一些使用方法.今天简单记录一下使用antd 4.0版本的Form表单校验,直接代码. 需要购买阿里云产品和服务 ...

  5. element-ui Form表单校验

    使用element-ui自带的表单校验,注意几个点: 1.el-form通过rules属性,绑定校验规则 2.el-form-item的prop属性,设置为需要校验的字段名 3.提交后二次校验 sav ...

  6. 封装Vue Element的form表单组件

    前两天封装了一个基于vue和Element的table表格组件,阅读的人还是很多的,看来大家都是很认同组件化.高复用这种开发模式的,毕竟开发效率高,代码优雅,逼格高嘛.虽然这两天我的心情很糟糕,就像& ...

  7. vue elementUI之Form表单 验证

    首先说一下 我在form表单里面遇见的坑: 1.例如我要给后台传的不是对象,而是一个数组,怎么写验证? 2.比如我有四个弹出框,都要做验证,这个时候就要注意了,每一个弹出框的ref都不能给的一样,并且 ...

  8. 使用Vue动态生成form表单

    form-create 表单生成器 具有数据收集.校验和提交功能的表单生成器,支持双向数据绑定和事件扩展,组件包含有复选框.单选框.输入框.下拉选择框等表单元素以及省市区三级联动,时间选择,日期选择, ...

  9. react + antd Form表单校验

    非空限制 {getFieldDecorator('name', { rules: [{ required: true, message: '名称不能为空', }],})( <Input plac ...

随机推荐

  1. Linux 打开文件数

    linux设置最大打开文件数 - daiyudong2020的博客 - CSDN博客 https://blog.csdn.net/daiyudong2020/article/details/77828 ...

  2. PHP技术知识点整理

    1.解释mvc (1)mvc即 模型model,视图view,控制器controller:是一种模型,是一种编程思想,就是把一个应用的输入.输出.数据处理分开,分解耦合(2)A..视图,数据采集和处理 ...

  3. osg include lib -computer1

    E:\\OpenSceneGraph\\OpenSceneGraph_3_6_install\\lib E:\\OpenSceneGraph\\3rdParty\\v140-x64\\lib Open ...

  4. Java二维数组的应用

    package com.imooc; public class ArrayDemo5 { public static void main(String[] args) { //二维数组的声明和创建: ...

  5. 【Linux】Jenkins以war包运行及开机启动配置(四)

    本例介绍jenkins已war包运行及开机启动配置 环境:Linux环境(CentOS 7.4) 以war包运行 1.下载jenkins.war包 2.启动war包( 默认端口:8080,默认JENK ...

  6. POJ 3903 Stock Exchange 最长上升子序列入门题

    题目链接:http://poj.org/problem?id=3903 最长上升子序列入门题. 算法时间复杂度 O(n*logn) . 代码: #include <iostream> #i ...

  7. 【Leetcode_easy】949. Largest Time for Given Digits

    problem 949. Largest Time for Given Digits solution: class Solution { public: string largestTimeFrom ...

  8. K8S - 容器编排工具Kubernetes简介

    1 - Kubernetes Kubernetes(简称K8s,用8代替8个字符"ubernete")是Google开源的一个容器编排引擎. 目前最为广泛且流行的容器编排调度系统, ...

  9. web端自动化——Remote应用

    Selenium Grid允许同时并行地.在不同的环境上运行多个测试任务.这里主要演示一下怎么使用Selenium Grid. 准备: 1. 需要两台机子 2.两台机子分别安装好JDK环境 3.两台机 ...

  10. 解决nginx端口占用问题

    1.键入命令:netstat -ano | findstr 80 查看80端口被哪个程序占用: 2.键入命令:netsh http show servicestate 查看http服务状态(注:解决后 ...