微信小程序常用表单校验方法(手机号校验、身份证号(严格和非严格校验、验证码六位数字校验))
util.js
function isPhone(value) {
if (!/^1(3|4|5|7|8)\d{9}$/.test(value)) {
return false
} else {
return true
}
}
//验证码六位数校验
function isSixNum(value) {
if (!/^\d{6}$/.test(value)) {
return false
} else {
return true
}
}
//身份证号不严格校验
function isCard(value) {
if (!/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value)) {
return false
} else {
return true
}
}
//身份证号严格校验
function IdentityIDCard (code) {
//身份证号前两位代表区域
var city = {
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: "国外 "
};
//身份证格式正则表达式
var idCardReg = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i;
var errorMess = "";//错误提示信息
var isPass = true;//身份证验证是否通过(true通过、false未通过)
//如果身份证不满足格式正则表达式
if (!code || !idCardReg.test(code)) {
errorMess = "您输入的身份证号格式有误!";
isPass = false;
}
//区域数组中不包含需验证的身份证前两位
else if (!city[code.substr(0, 2)]) {
errorMess = "您输入的身份证地址编码有误!";
isPass = false;
}
else {
//18位身份证需要验证最后一位校验位
if (code.length == 18) {
code = code.split('');
//∑(ai×Wi)(mod 11)
//加权因子
var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
//校验位
var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
var sum = 0;
var ai = 0;
var wi = 0;
for (var i = 0; i < 17; i++) {
ai = code[i];
wi = factor[i];
sum += ai * wi;
}
var last = parity[sum % 11];
if (parity[sum % 11] != code[17]) {
errorMess = "您输入的身份证号不存在!";
isPass = false;
}
}
}
var returnParam = {
'errorMess': errorMess,
'isPass': isPass
}
return returnParam;
}
//对外导出方法
module.exports = {
isPhone: isPhone,
isSixNum: isSixNum
isCard: isCard,
IdentityIDCard: IdentityIDCard
}
index.js
import untils from '../../utils/util.js' //相对地址
data(){
return{
isPhoneFlag: true, // 联系方式手机号状态
isSixFlag: true, // 联系方式手机号状态
isCardFlag: true, // 身份证状态
isManagerTel: true, // 经理联系方式状态
}
},
bindChange(e) {
if (e.target.dataset.key){
if (e.target.dataset.key == 'formOne.tele') {
this.setData({
isPhoneFlag: untils.isPhone(e.detail.value)
})
if (!this.data.isPhoneFlag) {
wx.showToast({
title: '联系方式格式有误',
icon: 'none',
duration: 2000,
})
}
}
if (e.target.dataset.key == 'formOne.uniqueCode') {
this.setData({
isSixFlag: untils.isSixNum(e.detail.value)
})
if (!this.data.isSixFlag) {
wx.showToast({
title: '请输入六位验证码',
icon: 'none',
duration: 2000,
})
}
}
if (e.target.dataset.key == 'formOne.idcard') {
this.setData({
isCardFlag: untils.IdentityIDCard(e.detail.value)
})
//console.log(this.data.isCardFlag.isPass)
if (!this.data.isCardFlag.isPass) {
wx.showToast({
title: this.data.isCardFlag.errorMess,
icon: 'none',
duration: 2000,
})
}
}
if (e.target.dataset.key == 'formTwo.managerTel') {
this.setData({
isManagerTel: untils.isPhone(e.detail.value)
})
if (!this.data.isManagerTel) {
wx.showToast({
title: '经理联系方式格式有误',
icon: 'none',
duration: 2000,
})
}
}
}
this.setData({
[e.target.dataset.key]: e.detail.value
})
}
index.wxml 写一个就行,数据绑定事件绑定同理
<view class="section">
<view class="section__title require">联系方式:</view>
<input type="number" name="tele" data-key="formOne.tele" bindblur="isPhone" bindchange="bindChange" value="{{formOne.tele}}" />
</view>
微信小程序常用表单校验方法(手机号校验、身份证号(严格和非严格校验、验证码六位数字校验))的更多相关文章
- 微信小程序-form表单-获取用户输入文本框的值
微信小程序-form表单-获取用户输入文本框的值 <input name='formnickname' class="textarea" placeholder=" ...
- 微信小程序之表单验证
表单验证 何为表单验证呢? 百度百科给出的回答是这样的: 表单验证是javascript中的高级选项之一.JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证 [ ...
- 微信小程序_(表单组件)checkbox与label
微信小程序组件checkbox官方文档 传送门 微信小程序组件label官方文档 传送门 Learn 一.checkbox组件 二.label组件与checkbox组件共用 一.checkbox组件 ...
- 微信小程序_(表单组件)button组件的使用
微信小程序表单组件button官方文档 传送门 Learn 一.button组件的使用 一.button组件的使用 size:按钮的大小[默认值default] type:按钮的样式类型[默认值def ...
- 微信小程序之表单提交
页面绑定很多事件! <view class="content"> <view class="user personal_func_list"& ...
- 2017-01-11小程序form表单提交
小程序form表单提交 1.小程序相对于之前的WEB+PHP建站来说,个人理解为只是将web放到了微信端,用小程序固定的格式前前端进行布局.事件触发和数据的输送和读取,服务器端可以用任何后端语言写,但 ...
- 微信小程序常用样式汇总
本文系转载: 原文作者:chenzheng8975 原文地址:https://www.cnblogs.com/chenzheng8975/p/9605186.html 微信小程序常用样式汇总 小程序特 ...
- 微信小程序 传值取值的方法总结
微信小程序 传值取值的几种方法总结 列表index下标取值 页面传值 form表单取值 1. 列表index下标取值 实现方式是:data-index="{{index}}"挖坑及 ...
- 微信小程序调接口常见问题解决方法
第一次调接口时遇见的bug. 注意:接口的域名不能使用 IP 地址或 localhost,且不能带端口号: 微信小程序如何调接口? wx.request({ url: 'http://miniapp/ ...
随机推荐
- idea Mybatis mapper配置文件删除SQL语句背景色
原样式: 看着很不爽 本文 idea 版本为:idea 2020.3.1,以下操作均基于此版本进行 解决办法 1.去除警告 Settings>Editor>Inspections>S ...
- 用注册表清除Office Word文档杀手病毒
不久前,笔者打开word文件时遇到了一件离奇的怪事,常用的Word文件怎么也打不开,总是出现提示框:"版本冲突:无法打开高版本的word文档".再仔细查看,文件夹里竟然有两个名字一 ...
- Linux TC 流量控制介绍
前段时间在做一些测试的时候接触到了Linux tc,因为需要对数据包添加延迟,用到了tc中的netem.添加简单的延迟非常简单,像这样一条命令就搞定了:$ tc qdisc add dev eth0 ...
- 1分钟为Win10瘦身!把吃掉的硬盘找回来
很多小伙伴升级完Win10后都发现C盘变小了,不少人以为这大概就是Win10太占磁盘空间了.但事实上,Win10和以前的操作系统一样,对于C盘空间并没有什么太高要求.出现这个问题的主要原因,是Win1 ...
- 什么是feigin?它的优点是什么?
1.feign采用的是基于接口的注解2.feign整合了ribbon,具有负载均衡的能力3.整合了Hystrix,具有熔断的能力使用:1.添加pom依赖.2.启动类添加@EnableFeignClie ...
- Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?
Zookeeper保证了CP(C:一致性,P:分区容错性),Eureka保证了AP(A:高可用) (1)当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的信息,但不能容忍直接down ...
- piwik安装部署
1.piwik介绍 Piwik是一个PHP和MySQL的开放源代码的Web统计软件,它给你一些关于你的网站的实用统计报告,比如网页浏览人数,访问最多的页面,搜索引擎关键词等等. Piwik拥有众多不同 ...
- LVS集群和Keepalived高可用实战
第四十章LVS集群和Keepalived高可用实战 一.ARP协议 1.概念 地址解析协议,即ARP(AddressResolutionProtocol),是根据IP地址获取物理MAC地址的一个TCP ...
- windows编写sh脚本在linux上不能执行
报错:/bin/sh^M:bad interpreter: 编码没有被识别, vi *.sh Esc 输入 :set fileformat 查看文件格式(显示 fileformat=dos) Esc ...
- spi协议
1. 概述 SPI = Serial Peripheral Interface,是串行外围设备接口,是一种高速,全双工,同步的通信总线.常规只占用四根线,节约了芯片管脚,PCB的布局省空间.现在越来越 ...