vue+iview的form表单校验总结
这篇文章时关于如何使用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表单校验总结的更多相关文章
- 应用二:Vue之ElementUI Form表单校验
(注:本文适用于有一定Vue基础或开发经验的读者,文章就知识点的讲解不一定全面,但却是开发过程中很实用的) 表单校验是前端开发过程中最常用到的功能之一,根据个人的工作经验总结在此对表单校验功能的基 ...
- iview form表单数值类型校验「iview自定义form表单校验器」
摘录iview表单验证 Form 组件基于 sync-validator 实现的数据验证,给 Form 设置属性 rules,同时给需要验证的 FormItem 设置属性 prop 指向对应字段即可. ...
- vue自定义轻量级form表单校验
遇到了form表单提交的需求,找了vue的组件觉得不够灵活,有时间自己写了一个. 调用方法 全局引入注册: import va from 'global/js/va' va.install(Vue); ...
- React-Antd4的Form表单校验
之前很少用react做项目,最近入职新公司,用的react,在自己的摸索过程中,慢慢会记录一些使用方法.今天简单记录一下使用antd 4.0版本的Form表单校验,直接代码. 需要购买阿里云产品和服务 ...
- element-ui Form表单校验
使用element-ui自带的表单校验,注意几个点: 1.el-form通过rules属性,绑定校验规则 2.el-form-item的prop属性,设置为需要校验的字段名 3.提交后二次校验 sav ...
- 封装Vue Element的form表单组件
前两天封装了一个基于vue和Element的table表格组件,阅读的人还是很多的,看来大家都是很认同组件化.高复用这种开发模式的,毕竟开发效率高,代码优雅,逼格高嘛.虽然这两天我的心情很糟糕,就像& ...
- vue elementUI之Form表单 验证
首先说一下 我在form表单里面遇见的坑: 1.例如我要给后台传的不是对象,而是一个数组,怎么写验证? 2.比如我有四个弹出框,都要做验证,这个时候就要注意了,每一个弹出框的ref都不能给的一样,并且 ...
- 使用Vue动态生成form表单
form-create 表单生成器 具有数据收集.校验和提交功能的表单生成器,支持双向数据绑定和事件扩展,组件包含有复选框.单选框.输入框.下拉选择框等表单元素以及省市区三级联动,时间选择,日期选择, ...
- react + antd Form表单校验
非空限制 {getFieldDecorator('name', { rules: [{ required: true, message: '名称不能为空', }],})( <Input plac ...
随机推荐
- flutter Tooltip轻量级操作提示
Tooltip是继承于StatefulWidget的一个Widget,它并不需要调出方法,当用户长按被Tooltip包裹的Widget时,会自动弹出相应的操作提示. import 'package:f ...
- Typescript中的可索引接口 类类型接口
/* 5.typeScript中的接口 可索引接口 类类型接口 */ /* 接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用 ...
- 如何:创建返回 UI 的外接程序
https://msdn.microsoft.com/zh-cn/library/bb909849(v=vs.100).aspx
- Qt编写气体安全管理系统4-通信协议
一.前言 通信协议解析是整个系统的核心灵魂,绝大部分人做软硬件通信开发,第一步估计就是写demo将协议解析好,然后再慢慢写整个界面和操作流程等,在工业控制领域,modbus协议应用还是非常广泛的,这个 ...
- KSQL Syntax Reference
KSQL Syntax Reference KSQL has similar semantics to SQL: Terminate KSQL statements with a semicolon ...
- Spring Boot与MyBatis的集成
SSM(Spring+Spring MVC+MyBatis)是当前主流的框架组合开发方式之一,普遍被应用于互联网项目中.如果要使用Spring Boot开发一个基于SSM框架的应用,那么我们要怎么做呢 ...
- 【JS新手教程】JS获取当前星期几的几种方法
该文通过获取星期几的几种方法,介绍JS里的数组,判断,和字符串截取,可以当作新手教程看,小白也看的懂.获取星期几,可通过Date()对象的getDay()获取,获取的是一个数字,对应的是0,1,2,3 ...
- didSelectRowAtIndexPath方法无响应解决办法
tableview的代理事件didSelectRowAtIndexPath失效,可能有三个原因: 1.没有设置tableview的Delegate 需要设置tableview的代理才可以响应代理事件 ...
- KVM虚拟机两种配置的概念不同之处
KVM虚拟机配置的两种方式之间的不同之处 NAT方式 NAT模式中,让虚拟机借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网. NAT模式中,虚拟机的网卡和物理网卡的网络,不在同一个网 ...
- PHP提高in_array查找元素的方法
PHP提高in_array查找元素的方法<pre><?php$arr = array(); // 创建10万个元素的数组for($i=0; $i<100000; $i++){ ...