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& ...
随机推荐
- ZYNQ uboot 网络调试
背景 使用 Vivado配置好网络,并在PetaLinux中构建了完整的uboot.kernel.rootfs以后,发现网络有问题. > ping 192.168.168.1 ethernet@ ...
- 使用explain优化慢查询的业务场景分析
问:你最害怕的事情是什么? 答:搓澡 问:为什么? 答:因为有些人一旦错过,就不在了 Explain 这个词在不同的上下文中有不同的含义.在数据库查询优化的上下文中,"EXPLAIN&quo ...
- 『vulnhub系列』BEELZEBUB- 1
『vulnhub系列』BEELZEBUB- 1 下载地址: https://www.vulnhub.com/entry/beelzebub-1,742/ 信息搜集: 使用nmap扫描存活主机,发现主机 ...
- 详解Web应用安全系列(5)敏感数据泄露漏洞
在最近几年,这是最常见的,最具影响力的攻击.这个领域最常见的漏洞是不对敏感数据进行加密.在数据加密过程中,常见的问题是不安全的密钥生成和管理以及使用弱密码算法,弱协议和弱密码.特别是使用弱的哈希算法来 ...
- 使用docker搭建ELK分式日志同步方案
ELK作为业界最常用日志同步方案,我们今天尝试一下使用docker快速搭建一套ELK方案.ELK使用国内加速源拉取的镜像比较旧,有条件的朋友可以拉取官网的源.elasticsearch作为日志储存库( ...
- 【Redis】BigKey问题
面试题 海量数据里查询某一固定前缀的key 生产上如何限制 keys * / flushdb / flushall 等危险命令以防止误删误用? MEMORY USAGE 命令用过吗? BigKey问题 ...
- DeepViT:字节提出深层ViT的训练策略 | 2021 arxiv
作者发现深层ViT出现的注意力崩溃问题,提出了新颖的Re-attention机制来解决,计算量和内存开销都很少,在增加ViT深度时能够保持性能不断提高 来源:晓飞的算法工程笔记 公众号 论文: Dee ...
- 开源免费又好用的中式数据报表:UReport2是一款高性能的架构在Spring之上纯Java报表引擎,通过迭代单元格可以实现任意复杂的中国式报表。
北润乾.南帆软,数加发力在云端. uReport 身何安?中式报表真开源. 报表江湖之中,uReport安身立命的产品品类定位是什么? 说来很简单,uReport的价值在于填补了这样一个市场空白:开源 ...
- 基于协同过滤技术的网上书城设计实现(源码+lw+部署文档+讲解等)
\n文末获取源码联系 感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询 系统介绍: 社会发展日新月异,用计算机应用实现数据管理功能已经算是很完善的了,但是随着移动 ...
- oeasy 教您玩转 linux 010400 总结 summary
###### 上一部分我们都讲了什么?* 各种gui* qt和gdk两个开源工具跨平台开发库* 发行版和gui之间的关系###### 我们一起来回顾一下整个学习过程* 我们从零开始* ...