Element-UI 中使用rules验证
第一种:写在data中进行验证
- <el-form>:代表这是一个表单
- <el-form> -> ref:表单被引用时的名称,标识
- <el-form> -> rules:表单验证规则
- <el-form> -> model:表单数据对象
- <el-form> -> label-width:表单域标签的宽度,作为 Form 直接子元素的 form-item 会继承该值
- <el-form> -> <el-form-item>:表单中的每一项子元素
- <el-form-item> -> label:标签文本
- <el-form-item> -> prop:表单域 model 字段,在使用 validate、resetFields 方法的情况下,该属性是必填的
- <el-input>:输入框
- <el-input> -> v-model:绑定的表单数据对象属性
- <el-input> -> style:行内样式
- <el-input> -> maxlength:最大字符长度限制
1.Template代码

<template>
<div class="">
<el-form
:model="editvalue"
:rules="editRules"
ref="schoolEdit"
label-width="150px"
>
<el-row>
<el-col :span="24">
<el-form-item label="姓名:" prop="name">
<el-input
v-model="editvalue.name"
placeholder="请输入姓名"
maxlength="10"
clearable
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="身份证号:" prop="idCardNumber">
<el-input
v-model="editvalue.idCardNumber"
clearable
maxlength="18"
placeholder="请输入身份证号"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="入职日期:" prop="contractEntryDate">
<el-date-picker
style="width: calc(100% - 20px)"
v-model="editvalue.contractEntryDate"
clearable
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择入职日期"
>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel">{{ $t("common.cancel") }}</el-button>
<el-button type="primary" @click="Submit">{{
$t("common.save")
}}</el-button>
</div>
</div>
</template>
2.Script代码

<script>
var $this = null;
export default {
props: {
id: { type: Number },
},
data() {
var checkIdentitytionId = (rule, value, callback) => {
if (!value) {
return callback(new Error("身份证号不能为空"));
}
if (!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(value)) {
callback(new Error("你输入的身份证长度或格式错误"));
}
//身份证城市
var aCity = {
11: "北京",
12: "天津",
13: "河北",
14: "山西",
15: "内蒙古",
21: "辽宁",
22: "吉林",
23: "黑龙江",
31: "上海",
32: "江苏",
33: "浙江",
34: "安徽",
35: "福建",
36: "江西",
37: "山东",
41: "河南",
42: "湖北",
43: "湖南",
44: "广东",
45: "广西",
46: "海南",
50: "重庆",
51: "四川",
52: "贵州",
53: "云南",
54: "西藏",
61: "陕西",
62: "甘肃",
63: "青海",
64: "宁夏",
65: "新疆",
71: "台湾",
81: "香港",
82: "澳门",
91: "国外",
};
if (!aCity[parseInt(value.substr(0, 2))]) {
callback(new Error("你的身份证地区非法"));
}
// 出生日期验证
var sBirthday = (
value.substr(6, 4) +
"-" +
Number(value.substr(10, 2)) +
"-" +
Number(value.substr(12, 2))
).replace(/-/g, "/"),
d = new Date(sBirthday);
if (
sBirthday !=
d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate()
) {
callback(new Error("身份证上的出生日期非法"));
}
// 身份证号码校验
var sum = 0,
weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2],
codes = "10X98765432";
for (var i = 0; i < value.length - 1; i++) {
sum += value[i] * weights[i];
}
var last = codes[sum % 11]; //计算出来的最后一位身份证号码
if (value[value.length - 1] != last) {
callback(new Error("你输入的身份证号非法"));
}
callback();
};
return {
rules: {
name: [
{
required: true,
maxlength: 10,
message: "请输入姓名",
trigger: "blur",
},
],
idCardNumber: [
{ required: true, validator: checkIdentitytionId, trigger: "blur" },
],
contractEntryDate: [
{ required: true, message: "请选择入职日期", trigger: "blur" },
],
},
editvalue: {},
isWorkflowRefer: false,
};
},
created() {
$this = this;
},
methods: {
Submit() {
this.$refs["schoolEdit"].validate(async (valid) => {
if (valid) {
//验证通过代码逻辑
} else {
//验证不通过代码逻辑
this.$message({
type: "error",
message: "数据检查失败,请检查数据是否填写正确",
});
return;
}
});
},
},
};
- editRules:与上文 '表单内容' 中 <el-form> 表单的 :rules 属性值相同
- name、idCardNumber、contractEntryDate:与上文 '表单内容' 中 <el-form-item> 表单子元素的 prop 属性值相同
- 验证内容是:必填,失去焦点时验证,如果为空,提示信息为 '请输入XXX'
- 对contractEntryDate验证为自定义方法验证:将验证函数checkIdentitytionId写入data里面,使用validator调用对数据进行验证。
第二种验证:写在行内
1.Template代码

<el-form ref="rulesForm" :rules="editRules" :model="rulesForm" label-width="200px">
<el-row>
<el-col :span="24">
<el-form-item label="姓名:" prop="name">
<el-input
v-model="editvalue.name"
placeholder="请输入姓名"
maxlength="10"
clearable
:rules=" [{ required: true, message: "请输入姓名", trigger: "blur"}]"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
</el-form>
本文仅做学习笔记,文章参考:https://blog.csdn.net/qq_41402200/article/details/86016313 此篇文章记录更全,知识点更广。
Element-UI 中使用rules验证的更多相关文章
- Element UI 中组件this.$message报错
最近在做毕设的时候,用Element UI中的消息提示message一直报以下的错误: 展示的效果也不好看,没有图标什么的: 但我明明有在main.js引入了element-ui 呀,因为毕设时间很赶 ...
- 关于Element UI中页面样式小问题
一,修改组件dialog窗口的大小 二,在我使用upload组件上传一张美女图片时,发现当预览图片时,图片是灰色的,点击一下才会变亮,这种效果使我很不舒服,于是我通过添加下面的一条样式,问题解决了(可 ...
- 关于Element UI中select组件中遇到的问题
问题一:在使用select组件设置多选功能后,窗口抖动问题? 详细描述:在我使用select做多选的功能时出现了窗口抖动的问题,测试的时候发现,在有些人的电脑上抖动,有些人的电脑上不抖,找了很多文档, ...
- element ui 中的 resetFields() 报错'resetFields' of undefined
每次做各种form表单时,首先要注意的是初始化,但是刚开始若没有仔细看文档,则会自己写个方法将数据设置为空,但是这样就会出现一个问题,表单内存在各种验证,假如是一个弹框内有form表单,弹框出现就执行 ...
- element ui中的一些小技巧
最近写公司的项目,这项目是vue和element ui搭建的, 做的是一套电力系统的管理平台. 遇到一个小麻烦,用过element ui 的都知道,使用element ui 弹框,点击空白处,默认是 ...
- vue+element ui中select组件选择失效问题原因与解决方法
codejing 2020-07-10 09:13:31 652 收藏 分类专栏: Web Vue Element UI 版权 .当表单form赋完值后,如果后续又对form中某一属性值进行操作如 ...
- yii CFormModel中的rules验证机制
public function rules() { return array( array('username, password', 'required'), array('rememberMe', ...
- 在vue中关于element UI 中表格实现下载功能,表头添加按钮,和点击事件失效的解决办法。
因为在element 中表格是使用el-table的形式通过数据来支撑结构,所以,表格的样式没有自己写的灵活,所以有了没法添加按钮的烦恼.下面是解决的方法. 准备工作: 一.下载npm安装包两个 1. ...
- Element Ui中table实现表格编辑效果
主要以css实现 .tb-edit .el-input, .tb-edit .el-input-number, .tb-edit .el-select { display: none; width: ...
- element ui中dialog相关问题
一,今天需要在dialog里面引入另一个页面,就是打开dialog显示该页面(把页面放到dialog中),引入的语句如下: <iframe src="view?path=rkdj_b& ...
随机推荐
- C# pythonnet(3)_Butter-worth低通滤波
Python代码如下 import pandas as pd import numpy as np import matplotlib.pyplot as plt from scipy import ...
- tcp_tw_reuse、tcp_tw_recycle、tcp_fin_timeout参数介绍
参数介绍 net.ipv4.tcp_tw_reuse = 1 表示开启重用.允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭: net.ipv4.tcp_tw_rec ...
- 使用浏览器的cookies进行登陆
1.使用浏览器Cookie登陆 In [ ]: cookie = 'uniqueVisitorId=a2151df1-4833-00ae-72e0-f4b99d2b7be2; pgv_pvid=232 ...
- PowerBuilder编程新思维10.5:外传2(PowerPlume下一代开发解决方案)
万里归来年愈少 PB编程新思维10.5:外传2(PowerPlume下一代解决方案) 前言 今天我们就来盘点一下,PB下一代开发的所有技术可能性.所谓下一代开发技术,就是指脱离或半脱离PBVM的应用开 ...
- 解决方案 | pyautogui实现等待特定图片(对话框)出现(可设置等待超时时间)
1.问题 为了等待某个[转换完毕]的图片(对话框)出现,如何设置? 2.解决方案代码如下 下面代码实现的是:设置超时时间为10s,当你在完成前序工作以后,代码开始进入等待,一旦你的特定图片出现了,马上 ...
- SQL Server 验证某栏位是否存在某字符串(CHARINDEX)
SELECT * FROM LiuJun_PKqitchqi WHERE CHARINDEX('230527Z3258',qr_code) > 0
- [oeasy]python0007-调试程序_debug
调试程序 回忆上次内容 py 的程序是按照顺序执行的 是一行行挨排解释执行的 程序并不是数量越多越好 kpi也在不断演化 编辑 写的代码越多 出现的bug就越多 什么是bug 如何找bu ...
- C# Expression详解(高级)
LINQ在本地查询IEnumerbale主要是用委托来作为传参,而解析型查询IQueryable则用Expression来作为传参: public static IEnumerable<T> ...
- vue小知识~使用$attrs和$listeners接收父组件转来的属性和方法
一般下我们子组件获取父组件传过来的的值得时候,我们是使用props来接收,但是如果我们父组件转过来的值是给孙组件使用时,使用哪个props接收的方式太过麻烦. 这是vue为我们提供了一个实例$attr ...
- Docker Engine在Centos下的安装
实践环境 Centos7.8 先决条件 CentOS 7.8. 必须开启 centos-extrasyum仓库源.默认是开启的,如果关闭了,需要重新开启,如下 编辑 /etc/yum.repos.d/ ...