【小程序】输入框检验姓名、身份证(正则表达式)并提交

news2024/11/24 20:41:46

目标

  • 输入绑定姓名、身份证号并进行校验
  • 若未填或校验不通过则显示绑定失败的轻提示
  • 若通过校验并提交则显示绑定成功

在这里插入图片描述

使用Vant Weapp (gitee.io)库。

思路与代码

html:

  • wx:model绑定输入框输入的值
  • data-key是一个属性,在js中的e.currentTarget.dataset.key可以得到
  • onChange、check分别是修改事件和失去焦点的事件
  • 错误提示统一配置,会用到上面的data-key
<view class="withdraw">
  <van-field
    wx:model="{{ username}}"
    data-key="username"
    bind:change="onChange"
    bind:blur="check"
    label="姓名"
    placeholder="请输入姓名"
    required
    error-message="{{ errmsg.username }}"
  />
  <van-field
    wx:model="{{ idcard }}"
    data-key="idcard"
    bind:change="onChange"
    bind:blur="check"
    label="身份证号"
    placeholder="请输入身份证号"
    required
    type="idcard"
    error-message="{{ errmsg.idcard }}"
  />
</view>

<view class="btn">
  <van-button block round color="#3975C6" bind:click="submit">确认</van-button>
</view>
<van-toast id="van-toast" />

js:

  • onChange 修改输入的值时,将输入的值赋值
  • check 失去焦点时,检验输入是否符合,正则表达式见代码
  • 注意:
  • 校验通过后对数据进行的操作因项目需求而异,这里是将数据存在状态管理store中
  • 由于data-key的值与e.currentTarget.dataset.key的值是相同的,可以通过data-key批量配置errmsgerrmsg 的属性也与data-key相同。
  • submit 点击确认按钮提交数据时,检验是否有错误输入,若有则“绑定失败”,否则“绑定成功”
createPage({
   setup() {
     let username =ref('')
     let idcard = ref('')
     let errmsg = reactive({
       username: ' ',
       idcard: ' '
     }) //错误提示信息

     const onChange = (e) => {
       let type = e.currentTarget.dataset.key
       if (type === 'username') username.value = e.detail
       if (type === 'idcard') idcard.value = e.detail
     }

     const check = (e) => {
       let type = e.currentTarget.dataset.key
       if (type === 'username') {
         let reg = /^(?:[\u4e00-\u9fa5·]{2,16})$/
         if (!reg.test(e.detail.value)) {
           errmsg[type] = '请输入正确的中文名字'
         } else {
           errmsg[type] = ''
           //存在store状态管理中,这里因项目而异
           store.setWxUserInfo(Object.assign(store.getWxUserInfo, { username }))
         }
       }
       if (type === 'idcard') {
         let reg =
           /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/

         if (!reg.test(e.detail.value)) {
           errmsg[type] = '身份证格式不正确'
         } else {
           errmsg[type] = ''
           store.setWxUserInfo(Object.assign(store.getWxUserInfo, { idcard }))
         }
       }
     }

     const submit = () => {
       if (errmsg['username'] === '' && errmsg['idcard'] === '') {
         store.setWxUserInfo(store.getWxUserInfo)
         Toast('绑定成功!')
       } else {
         Toast('绑定失败!')
       }
     }

     return {
       username,
       idcard,
       check,
       errmsg,
       onChange,
       submit
     }
   }
 })

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

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

相关文章

【新星计划-2023】ARP“攻击”与“欺骗”的原理讲解

网络管理员在网络维护阶段需要处理各种各样的故障&#xff0c;出现最多的就是网络通信问题。除物理原因外&#xff0c;这种现象一般是ARP攻击或ARP欺骗导致的。无论是ARP攻击还是ARP欺骗&#xff0c;它们都是通过伪造ARP应答来实现的。 一、ARP攻击原理 一般情况下&#xff0…

TypeScript语言编译命令

1. 安装 npm install -g typescript2. 编译 tsc工具是TypeScript编译器的控制台接口&#xff0c;它可以将TypeScript文件编译成JavaScript文件&#xff1b; 编译文件&#xff1a; tsc [options] [file ...]查看编译命令的帮助信息&#xff1a; tsc --help或者 tsc -h或者 tsc…

微服架构基础设施环境平台搭建 -(一)基础环境准备

微服架构基础设施环境平台搭建 -&#xff08;一&#xff09;基础环境准备 通过采用微服相关架构构建一套以KubernetesDocker为自动化运维基础平台&#xff0c;以微服务为服务中心&#xff0c;在此基础之上构建业务中台&#xff0c;并通过Jekins自动构建、编译、测试、发布的自动…

【Java AWT 图形界面编程】IntelliJ IDEA 乱码问题最佳配置方案 ( 配置文件编码 | 配置编译器编码参数 | 配置运行时编码参数 )

文章目录 一、IntelliJ IDEA 乱码问题二、IntelliJ IDEA 乱码问题最佳配置方案1、文件编码设置成 UTF-82、编译器编码参数设置成 UTF-83、 配置运行时编码参数为 GBK 一、IntelliJ IDEA 乱码问题 在 IntelliJ IDEA 中开发 AWT / Swing 图形界面程序 , 经常遇到乱码问题 ; 文件…

博文的跑路笔记

HTML CSS Flex布局 使用flex布局 容器 .box {display: flex; }行内元素 .box {display: inline-flex; }flex布局后&#xff0c;float、vertical-align、clear失效。 容器属性 flex-direction&#xff1a;主轴方向 属性值 row&#xff1a;子元素起点在左&#xff0c;左到右。…

初级面试问到rabbitMQ,看这一篇文章就够了!

一、rabbitMQ的基础要点回顾 1.使用场景 1&#xff09;解耦&#xff1a;使用消息队列避免模块间的直接调用。将所需共享的数据放在消息队列中&#xff0c;对于新增的业务模块&#xff0c;只要对该类消息感兴趣就可以订阅该消息&#xff0c;对原有系统无影响&#xff0c;降低了…

防范化解灾害风险,科技筑牢安全城墙

气象灾害&#xff1a;大气圈变异活动会对人类生命财产和国民经济及国防建设等造成的直接或间接损害。我国气象灾害种类繁多&#xff0c;不仅包括台风、暴雨、冰雹、大风、雷暴、暴风雪等天气灾害&#xff0c;还包括干旱、洪涝、持续高温、雪灾等气候灾害。此外&#xff0c;与气…

Docker中部署监控

Docker概念 一、部署Prometheus+grafana环境 1.1 、部署Prometheus+grafana环境 docker pull registry.cn-hangzhou.aliyuncs.com/lhrbest/lhrprometheus:1.0 docker tag registry.cn-hangzhou.aliyuncs.com/lhrbest/lhrprometheus:1.0 lhrbest/lhrprometheus:1.01.2 、创建镜…

【分布式事务】Seata 之 @GlobalTransactional 在TM侧的核心逻辑

文章目录 一、概述二、GlobalTransactional核心逻辑三、GlobalTransactional核心源码解读四、事务能力的启停运行期的开关变更 一、概述 Seata 依赖 Spring 的注解机制&#xff0c;实现声明式事务&#xff0c;即开发者给 Bean 使用GlobalTransactional注解 &#xff0c;Seata …

深度学习03-卷积神经网络(CNN)

简介 CNN&#xff0c;即卷积神经网络&#xff08;Convolutional Neural Network&#xff09;&#xff0c;是一种常用于图像和视频处理的深度学习模型。与传统神经网络相比&#xff0c;CNN 有着更好的处理图像和序列数据的能力&#xff0c;因为它能够自动学习图像中的特征&…

GIS 根据投影坐标点获取投影坐标所属的投影坐标系EPSG

什么是EPSG? EPSG&#xff08;The European Petroleum Survey Group,官网 http://www.epsg.org/&#xff09;维护着空间参照对象的数据集&#xff0c;OGC标准中空间参照系统的SRID&#xff08;Spatial Reference System Identifier&#xff09;与EPSG的空间参照系统ID相一致。…

冒泡数组实现和冒泡数组的改进以及插入法排序

概念 在数组排序的过程中&#xff0c;每次比较相邻的两个数&#xff0c;并且把大的数放在后面 例如{1&#xff0c;3&#xff0c;5&#xff0c;7&#xff0c;9&#xff0c;2&#xff0c;4&#xff0c;6&#xff0c;8&#xff0c;10} 实现 #include<iostream> using names…

修改ro.debuggable用于调试安卓应用

一.Root 网上有很多root教程,这里推荐: 玩机必看&#xff01;带你入坑安卓刷机&#xff0c;小白也能看懂的ROOT基础指南来啦&#xff01; 很详细的介绍了Root的原理和方法,强烈推荐使用Magisk工具 可以使用命令adb shell getprop ro.debuggable查看ro.debuggable的值 二.Magi…

[MYSQL / Mariadb]数据库学习-表结构、键值(普通索引、主键、外键)

数据库学习-表结构、键值 回顾数据类型表结构字段约束条件&#xff08;限制字段赋值的&#xff09;例&#xff0c;建表并设置约束条件设置default列为0 修改表结构例添加新字段&#xff0c;并设置位置。修改字段类型change 修改字段名注意&#xff1a;在修改字段名或字段类型时…

Java中的 stop the world是什么?

一、概述&#xff1b; 从字面上讲&#xff0c;就是停止这个世界&#xff0c;看到这个字眼&#xff0c;就觉得这是可怕的事情&#xff0c;那到底什么是stop-the-world&#xff1f; stop-the-world&#xff0c;简称 STW&#xff0c;指的是 GC 事件发生过程中&#xff0c;会产生…

面试题30天打卡-day26

1、什么是 AOP&#xff1f;Spring AOP 和 AspectJ AOP 有什么区别&#xff1f;有哪些实现 AOP 的方式&#xff1f; AOP&#xff08;Aspect-Oriented Programming&#xff0c;面向切面编程&#xff09;是一种编程思想&#xff0c;可以在不修改原有业务逻辑代码的情况下&#xf…

srs 直播连麦环境搭建

一、简介 二、修改conf/rtc.conf 三、两个客户端加入房间 四、合流 4.1分别拉流尝试 4.2合流推流 4.3拉取合流 一、简介 直播连麦是指在one2one或one2many进行音视频通话&#xff0c;此时把他们的音视频流合在一起&#xff0c;通过rtmp等协议推送给大量用户做直播。 因此首选需…

Java面试(3)基础语法

基础语法 1. 标识符和关键字的区别是什么&#xff1f; 在我们编写程序的时候&#xff0c;需要大量地为程序、类、变量、方法等取名字&#xff0c;于是就有了 标识符 。简单来说&#xff0c; 标识符就是一个名字 。 有一些标识符&#xff0c;Java 语言已经赋予了其特殊的含义…

python带你用最简单嘚词云图分析出最热话题

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 平常我们爬的评论、弹幕等等&#xff0c;数量又多又密&#xff0c;根本看不过来&#xff0c; 这时候数据分析的作用来了&#xff0c; 今天我们就试试用Python根据这些数据&#xff0c;来绘制词云图进行热词分析。 目录…

JUC-线程Callable使用与FutureTask源码阅读

JUC-线程Callable使用与FutureTask源码阅读 Callable简单使用 带返回值的线程(实现implements Callable<返回值类型>)&#xff0c;使用示例 import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Fut…