vue3 身份证校验、识别性别/生日/年龄

表单项绑定 @change 事件

<template><el-form ref="employeeFormRef" :model="form" :rules="rules" label-width="120px"><el-form-item label="身份证号" prop="idCardNo"><el-input v-model="form.idCardNo" placeholder="请输入身份证号" @change="idCardNoChange" /></el-form-item><el-form-item label="出生日期" prop="dateOfBirth"><el-date-picker clearablev-model="form.dateOfBirth"type="date"value-format="YYYY-MM-DD"placeholder="请选择出生日期"></el-date-picker></el-form-item><el-form-item label="年龄" prop="age"><el-input v-model="form.age" placeholder="请输入年龄" /></el-form-item><el-form-item label="性别" prop="sex"><el-select v-model="form.sex" placeholder="请选择性别"><el-optionv-for="dict in sys_user_sex":key="dict.value":label="dict.label":value="dict.value"></el-option></el-select></el-form-item></el-form>
</template>

 定义身份验证规则规则

const isIdCardNo = (rule, value, callback) => {var arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];//加权因子var arrValid = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];//校验码if (/^\d{17}\d|x$/i.test(value)) {var sum = 0, idx;for (var i = 0; i < value.length - 1; i++) {// 对前17位数字与权值乘积求和sum += parseInt(value.substr(i, 1), 10) * arrExp[i];}// 计算模(固定算法)idx = sum % 11;// 检验第18为是否与校验码相等if (arrValid[idx] == value.substr(17, 1).toUpperCase()) {callback()} else {form.value.sex = '';form.value.dateOfBirth = '';form.value.age = '';callback("身份证格式有误");}} else {form.sex = '';form.dateOfBirth = '';form.value.age = '';callback("身份证格式有误");}
};const data = reactive<PageData<EmployeeForm, EmployeeQuery>>({rules: {idCardNo: [{ required: true, message: "身份证号不能为空", trigger: "blur" },{	//调用定义的方法校验格式是否正确validator: isIdCardNo, trigger: "blur"}],}
});

 识别性别、出生日期

// 身份证识别性别出生日期
const idCardNoChange = () => {const reg =/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;if (reg.test(form.value.idCardNo)) {let org_birthday = form.value.idCardNo.substring(6, 14);let org_gender = form.value.idCardNo.substring(16, 17);let sex = org_gender % 2 == 1 ? "0" : "1";let birthday =org_birthday.substring(0, 4) +"-" +org_birthday.substring(4, 6) +"-" +org_birthday.substring(6, 8);form.value.sex = sex;form.value.dateOfBirth = birthday;form.value.age = ageValue(birthday).age;} else {return false;}
};

出生日期计算年龄

/*** 获取年龄* @param val* @returns {{month: unknown, day: unknown, age: unknown}}*/
const ageValue= (val?: String) => {// 新建日期对象let date = new Date()// 今天日期,数组,同 birthdaylet birthdayDate = new Date(val)let birthday = [birthdayDate.getFullYear(), birthdayDate.getMonth(), birthdayDate.getDate()]let today = [date.getFullYear(), date.getMonth() + 1, date.getDate()]// 分别计算年月日差值let age = today.map((value, index) => {return value - birthday[index]})// 当天数为负数时,月减 1,天数加上月总天数if (age[2] < 0) {// 简单获取上个月总天数的方法,不会错let lastMonth = new Date(today[0], today[1], 0)age[1]--age[2] += lastMonth.getDate()}// 当月数为负数时,年减 1,月数加上 12if (age[1] < 0) {age[0]--age[1] += 12}return {age:age[0],month:age[1],day:age[2]}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

领略超越王勃的AI颂扬艺术:一睹其惊艳夸赞风采

今日&#xff0c;咱也用国产AI技术&#xff0c;文心一言3.5的文字生成与可灵的图像创作&#xff0c;自动生成一篇文章&#xff0c;提示语文章末下载。 【玄武剑颂星际墨侠】 苍穹为布&#xff0c;星辰织锦&#xff0c;世间万象&#xff0c;皆入我玄武剑公众号之浩瀚画卷。此号…

Python入门 函数传递

目录 函数的多返回值 函数的多种传参形式 位置参数 关键字参数 缺省参数 不定长参数 位置传递 关键字传递 函数作为参数传递 lambda匿名函数 函数定义中 匿名函数的语法 函数的多返回值 按照返回值的顺序&#xff0c;与对应顺序的多个变量接受即可 变量之间用逗号…

SPI协议——对外部SPI操作(跨页读写)

关于W25Q32JVSSIQ的详细内容在之前的两篇文章中已经详细介绍&#xff0c;本文不做太多赘述&#xff0c;如果对芯片的了解有缺失的话&#xff0c;可以参考&#xff1a; SPI协议——对外部SPI Flash操作-CSDN博客 SPI协议——读取外部SPI Flash ID_spi flash 读取id-CSDN博客 目录…

【SpringCloud应用框架】Nacos集群配置

第八章 Spring Cloud Alibaba Nacos之集群配置 文章目录 一、Linux版NacosMySql生产环境配置具体配置&#xff1a; 二、Nacos集群配置更改Nacos启动命令配置原理具体配置测试启动总结 一、Linux版NacosMySql生产环境配置 上一篇博客中已经了解了Nacos生产环境下需要搭建集群配…

ubuntu20.04:ROS驱动usb相机和livox雷达——Noetic版本

简单记录驱动相机和雷达并录包。 目录 前言 一、ROS的简单安装 二、安装USB相机驱动 1.准备工作 2.安装usb_cam驱动 3.修改配置文件和启动相机节点 另一种安装方式 三、配置Livox雷达 1.安装Livox SDK2 2.安装livox_ros_driver2 3.配置和启动雷达节点 四、录制bag包…

XDMA原理学习(1)——DMA技术详解

目录 一、什么是DMA&#xff1f;为什么需要DMA&#xff1f; 二、DMA分类 2.1 Block DMA 2.2 Scatter-Gather DMA 2.3 Ring buffer DMA 三、实际案例 3.1 STM32微处理器 3.1.1 Block DMA 3.1.2 Scatter-Gather DMA 3.1.3 使用场景举例&#xff1a; 3.1.4 配置与实现 …

Q_OBJECT 的作用

在Qt框架中&#xff0c;Q_OBJECT宏起着至关重要的作用。当你在一个类中使用Q_OBJECT宏时&#xff0c;它提供了以下功能&#xff1a; 元对象系统支持&#xff1a;Q_OBJECT宏启用了Qt的元对象系统&#xff0c;允许对象进行内省&#xff08;introspection&#xff09;。这意味着对…

MySQL8之mysql-community-client-plugins的作用

mysql-community-client-plugins是MySQL社区版客户端的一组插件&#xff0c;它们扩展了MySQL客户端的功能。这些插件通常用于增强客户端的某些特定能力&#xff0c;如连接管理、数据处理、安全验证等。以下是对mysql-community-client-plugins的详细解释&#xff1a; 一、功能…

3GPP R18 Multi-USIM 是怎么回事?(三)

这篇内容相对来说都是一些死规定,比较枯燥。主要是与MUSIM feature相关的mobility and periodic registration和service request触发过程的一些规定,两部分的内容是有部分重叠的,为保证完整性,重复部分也从24.501中摘了出来。 24.501 4.25 网络和MUSIM UE可以支持MUSIM fe…

idea控制台乱码问题解决教程

注&#xff1a;按顺序来操作&#xff0c;完成后要重启软件 方案一&#xff1a;修改Tomcat的编码设置 在Tomcat的VM options中添加了-Dfile.encodingUTF-8 方案二&#xff1a;修改IDEA的编码设置 File->Settings->Editor->File Encodings 将Global Encoding、Proj…

应用服务启动提示数据库连接太多,被锁住 同一ip无法再次连接问题

今天在启动应用的时候 提示数据库连接过多&#xff0c;对应的ip无法再次连接到数据库导致应用无法启动的问题 临时解决方案&#xff1a; 1、查看目前最大连接数是多少 show variables like ‘%max_connect_errors%’; 2、修改最大连接数为1000 set global max_connect_errors…

STM32-外部中断浅析

本篇解释了STM32中断原理 MCU为什么需要中断 中断&#xff0c;是嵌入式系统中很重要的一个功能&#xff0c;在系统运行过程中&#xff0c;当出现需要立刻处理的情况时&#xff0c;暂停当前任务&#xff0c;转而处理紧急任务&#xff0c;处理完毕后&#xff0c;恢复之前的任务…

深度学习之正则化

目标 我们学习正则化之前应该先了解我们为什么要用正则化 。正则化解决了什么问题 。我们讲正则化之前 &#xff0c;先了解一个概念–》过拟合 过拟合 数据增强 L1和L2正则化 Dropout 注意&#xff1a;Dropout是不适合用在卷积神经网络的 提前终止 一般的做法是&#xff1a;记…

pytorch通过 tensorboardX 调用 Tensorboard 进行可视化

示例 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader from torchvision import datasets, transformsfrom tensorboardX import SummaryWriter# 定义神经网络模型 class SimpleCNN(nn.Module):def __init__(self):…

B端工作台如何设计?指导思想+布局建议+大厂案例全给你

一、B端工作台设计的指导思想 要做好B端工作台设计&#xff0c;以下是一些建议和策略&#xff1a; 1. 用户研究&#xff1a;深入了解目标用户的需求、行为和工作流程。通过用户研究方法&#xff0c;如用户访谈、观察和调研&#xff0c;收集用户反馈和意见&#xff0c;了解他们…

spark 中hint使用总结

在spark sql 中用户可以使用Join hint来建议Spark使用哪一种Join。在Spark 3.0以前&#xff0c;只支持BROADCAST这种Join hint。从Spark 3.0开始增加了MERGE、SHUFFLE_HASH和SHUFFLE_REPLICATE_NL这三种Join Hint。优先级为BROADCAST > MERGE > SHUFFLE_HASH > SHUFFL…

【计算机组成原理】计算机系统概述(上)

&#xff08;一&#xff09;计算机系统简介 计算机系统有“硬件”和“软件”两大部分组成。 1&#xff09;所谓“硬件”即指见计算机的实体部分&#xff0c;它由看得见摸得着的各种电子元器件、各类光、电、机设备的事物组成&#xff0c;如主机、外设等等。 2&#xff09;所谓…

以SGET协会OSM标准首创有662引脚的OSM模组——凌华智能引领嵌入式运算市场

在可焊接的45 x 45mm尺寸上提升功率 开启嵌入式运算发展的新时代 摘要&#xff1a; 1.开放式标准模块(OSM™)&#xff0c;最大尺寸仅45 x 45mm&#xff0c;采用零开销的模块化系统简化生产&#xff0c;并提供662个引脚以增强小型化和物联网应用。 2.凌华智能提供基于NXP i.M…

持续提升入境游客支付便利性 支付宝可绑银联国际卡支付

随着免签等系列便利入境游政策的推出、国际航班的持续复苏&#xff0c;越来越多的全球游客来中国旅行&#xff0c;入境游持续升温。为进一步助力全球游客用一个支付宝畅游中国&#xff0c;提升入境游客支付便利性&#xff0c;7月8日&#xff0c;支付宝表示将联合银联国际升级支…

快速掌握AI的最佳途径实践

科技时代&#xff0c;人工智能&#xff08;AI&#xff09;已经成为许多人希望掌握的重要技能。对于普通人来说&#xff0c;如何快速有效地学习AI仍然是一个挑战。本文将详细介绍几种快速掌握AI的途径&#xff0c;并提供具体的操作步骤和资源建议。 前言 AI的普及和应用已经深…