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>

  

微信小程序常用表单校验方法(手机号校验、身份证号(严格和非严格校验、验证码六位数字校验))的更多相关文章

  1. 微信小程序-form表单-获取用户输入文本框的值

    微信小程序-form表单-获取用户输入文本框的值 <input name='formnickname' class="textarea" placeholder=" ...

  2. 微信小程序之表单验证

    表单验证 何为表单验证呢? 百度百科给出的回答是这样的: 表单验证是javascript中的高级选项之一.JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证 [ ...

  3. 微信小程序_(表单组件)checkbox与label

    微信小程序组件checkbox官方文档 传送门 微信小程序组件label官方文档 传送门 Learn 一.checkbox组件 二.label组件与checkbox组件共用 一.checkbox组件 ...

  4. 微信小程序_(表单组件)button组件的使用

    微信小程序表单组件button官方文档 传送门 Learn 一.button组件的使用 一.button组件的使用 size:按钮的大小[默认值default] type:按钮的样式类型[默认值def ...

  5. 微信小程序之表单提交

    页面绑定很多事件! <view class="content"> <view class="user personal_func_list"& ...

  6. 2017-01-11小程序form表单提交

    小程序form表单提交 1.小程序相对于之前的WEB+PHP建站来说,个人理解为只是将web放到了微信端,用小程序固定的格式前前端进行布局.事件触发和数据的输送和读取,服务器端可以用任何后端语言写,但 ...

  7. 微信小程序常用样式汇总

    本文系转载: 原文作者:chenzheng8975 原文地址:https://www.cnblogs.com/chenzheng8975/p/9605186.html 微信小程序常用样式汇总 小程序特 ...

  8. 微信小程序 传值取值的方法总结

    微信小程序 传值取值的几种方法总结 列表index下标取值 页面传值 form表单取值 1. 列表index下标取值 实现方式是:data-index="{{index}}"挖坑及 ...

  9. 微信小程序调接口常见问题解决方法

    第一次调接口时遇见的bug. 注意:接口的域名不能使用 IP 地址或 localhost,且不能带端口号: 微信小程序如何调接口? wx.request({ url: 'http://miniapp/ ...

随机推荐

  1. 舒服,给Spring贡献一波源码。

    你好呀,我是歪歪. 这周我在 Spring 的 github 上闲逛的时候,一个 issues 引起了我的兴趣. 这篇文章,是我顺着这个 issues 往下写,始于它,但是不止于它: https:// ...

  2. ACL流策略

    QoS实现工具之MQC-qos设置 作者:上犹日期:2019-10-23 11:30:36 返回目录:设置问题 QoS技术可以对网络中报文进行分类处理,根据优先级提供不同的差分服务,如何实现这种差分服 ...

  3. LGP3092题解

    看 DP 的时候翻到的题,发现这题的坑鸽子了一年半 这个状态感觉比较厉害,还是来记录一下吧. 首先硬币数量很少让我们想到状压,可以想出来一个十分 navie 的状态:\(dp[S][n]\) 表示用过 ...

  4. 2.9 C++STL map/multimap容器详解

    文章目录 2.9.1 引入 2.9.2 代码示例 map案列 multimap案列 2.9.3 代码运行结果 总结 2.9.1 引入 map相对于set区别,map具有键值和实值,所有元素根据键值自动 ...

  5. centos7安装mysql(完整)

    安装包下载并上传到Linux系统中 官网5.7版本:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.29-1.el7.x86_64.rpm-b ...

  6. Ubuntu20.04安装RabbitMQ

    本博客旨在自我学习使用,如有任何疑问请及时联系博主 安装erlang 由于RabbitMq需要erlang语言的支持,在安装RabbitMq之前需要安装erlang sudo apt-get inst ...

  7. [SPDK/NVMe存储技术分析]009 - Introduction to RDMA Send | RDMA Send操作概论

    来源: https://zcopy.wordpress.com/ 说明: 本文不是对原文的逐字逐句翻译,而是摘取核心部分以介绍RDMA Send操作(后面凡是提到RDMA send, 都对应于IBA里 ...

  8. SpringMVC前后端分离交互传参详细教程

    温故而知新,本文为一时兴起写出,如有错误还请指正 本文后台基于SpringBoot2.5.6编写,前端基于Vue2 + axios和微信小程序JS版分别编写进行联调测试,用于理解前后端分离式开发的交互 ...

  9. J20航模遥控器开源项目系列教程(四)PCB打印 | 嘉立创PCB下单教程,5元顺丰包邮解君愁!

    我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/J ...

  10. Java基础 (下)

    泛型 Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符? Java 泛型(generics) 是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时 ...