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. laravel7 微信小程序获取openid

    l 通过微信公众号获取appid和appsecret l 在小程序页面中编写代码获取code l 在后端编写方法,换取openid l 添加一个按钮,给按钮一个开放能力 open-type=" ...

  2. 详解java接口interface

    引言 接口这个词在生活中我们并不陌生. 在中国大陆,我们可以将自己的家用电器的插头插到符合它插口的插座上: 我们在戴尔,惠普,联想,苹果等品牌电脑之间传输数据时,可以使用U盘进行传输. 插座的普适性是 ...

  3. LintCode 练习题

    /** * 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输 ...

  4. C++设计模式 - 状态模式(State)

    状态变化模式 在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?"状态变化"模式为这一问题提供了一种解决方案. 典型模式 Sta ...

  5. file_put_contents利用技巧(php://filter协议)

    Round 1 <?php $content = '<?php exit; ?>'; $content .= $_POST['txt']; file_put_contents($_P ...

  6. [Java编程思想] 第七章 复用类

    第七章 复用类 第一种方法非常直观:只需在新的类中产生现有类的对象(组合). 第二种方法更细致一些:它按照现有类的类型来创建新类(继承). 7.1 组合语法   只需将对象引用置于新类中即可. cla ...

  7. bzoj5130 字符串的周期(kmp,最小表示法)

    bzoj5130 字符串的周期(kmp,最小表示法) bzoj 题解时间 m很大,n很小. 周期很容易求,就是kmp之后n-fail[n]. 之后对于枚举所有的字符串用最小表示法,暴力搜索. 能过就完 ...

  8. 深度优先算法--对DFS的一些小小的总结(一)

    提到DFS,我们首先想到的是对树的DFS,例如下面的例子:求二叉树的深度 int TreeDepth(BinaryTreeNode* root){ if(root==nullptr)return 0; ...

  9. 【freertos】005-启动调度器分析

    前言 本节主要讲解启动调度器. 这些都是与硬件相关,所以会分两条线走:posix和cortex m3. 原文:李柱明博客:https://www.cnblogs.com/lizhuming/p/160 ...

  10. Linux 下命令有哪几种可使用的通配符?分别代表什么含义?

    "?"可替代单个字符. "*"可替代任意多个字符. 方括号"[charset]"可替代 charset 集中的任何单个字符,如[a-z],[ ...