插件下载地址及官方文档:https://github.com/skyvow/wx-extend

具体的WxValidate.js文件的位置在wx-extend/src/assets/plugins/wx-validate/WxValidate.js   

地址: https://github.com/skyvow/wx-extend/tree/master/src/assets/plugins/wx-validate

步骤一:将文件 WxValidate.js 拷贝到utils目录下

步骤二:2种引入方式 =》全局引入: 在app.js中写以下代码;局部引入:在需要的js文件下写以下代码【这里要写绝对路径】

import wxValidate from "./utils/wxValidate";

步骤三:wxml匹配规则,通过name

wxml 里 input 的name值必须和配置的rules的名称一致,否则匹配无效

步骤三:在js配置规则

import WxValidate from '../../../utils/WxValidate';

Page({
/*** 页面的初始数据*/
data: {}, onLoad: function(options) { /*** 4-1(先初始化表单)*/ this.initValidate();
}, /*** 表单-验证字段*/
initValidate() {
/*** 4-2(配置规则)*/
const rules = {
name: {
required: true,
rangelength: [2, 4]
},
idcard: {
required: true,
idcard: true,
},
tel: {
required: true,
tel: true,
},
// 配置false可关闭验证
regcode: {
required: false,
minlength: 6
},
assistance: {
required: true,
assistance: true,
},
}
// 验证字段的提示信息,若不传则调用默认的信息
const messages = {
name: {
required: '请输入姓名',
rangelength: '请输入2~4个汉字个汉字'
},
tel: {
required: '请输入11位手机号码',
tel: '请输入正确的手机号码',
},
idcard: {
required: '请输入身份证号码',
idcard: '请输入正确的身份证号码',
},
regcode: {
required: '请输入验证码',
minlength: '请输入正确的验证码'
},
assistance: {
required: '请勾选 《顺风男服务协议》'
},
}; // 创建实例对象
this.WxValidate = new WxValidate(rules, messages) /*** 也可以自定义验证规则*/
this.WxValidate.addMethod('assistance', (value, param) => {
return this.WxValidate.optional(value) || (value.length >= 1 && value.length <= 2)
}, '请勾选 《顺风男服务协议》')
},
submitForm(e) {
/***4-3(表单提交校验)*/
const params = e.detail.value
if (!this.WxValidate.checkForm(params)) {
const error = this.WxValidate.errorList[0]
this.showModal(error)
return false
}
/*** 这里添写验证成功以后的逻辑**/ //验证通过以后->
this.submitInfo(params);
}, /*** 表单-提交*/
submitInfo(params) {
// form提交
let form = params;
console.log('将要提交的表单信息:', form); wx.showToast({
title: '提交成功!!!!',
})
}, showModal(error) {
wx.showModal({
content: error.msg,
showCancel: false,
})
}
});

xml

<form bindsubmit='submitForm'>
<view class="container">
<view class='container-info'>
<view class="man-form-info">
<view class='name'>姓名
<input placeholder='请输入姓名' name="name"></input>
</view>
<view class='idcard'>
身份证号码
<input maxlength='18' placeholder='请输入身份证号码' type='idcard' name="idcard"></input>
</view> <view class='phone'>
手机号码
<input maxlength='11' placeholder='请输入手机号码' type='number' bindinput="phoneValue" name="tel"></input>
</view>
</view>
</view> <view class='read-man-pact'>
<checkbox-group name="assistance">
<checkbox></checkbox>
<navigator class='pact'>阅读《顺风男服务协议》</navigator>
</checkbox-group>
</view> <view class='submit-form-info'>
<button form-type='submit'>提交</button>
</view> </view>
</form>

wxss

page {
font-size: 30rpx;
} input:hover {
border-bottom: 2px solid #ddd;
} button:active {
opacity: 0.7;
} .container-info {
padding: 5%;
} .man-form-info {
display: flex;
flex-wrap: wrap;
justify-content: center;
} .man-form-info .name, .man-form-info .idcard, .man-form-info .phone,
.man-form-info .regcode {
display: flex;
width: 100%;
flex-wrap: wrap;
margin-top: 2%;
} .man-form-info input {
width: 100%;
border-bottom: 1px solid #ddd;
} .regcode {
position: relative;
} .regcode button {
border-radius: 10rpx;
background-color: #3879d9;
color: #fff;
height: 54rpx;
line-height: 54rpx;
font-size: 23rpx;
width: 300rpx;
margin-top: -2%;
} .regcode input {
width: 100%;
} .code {
position: relative;
width: 100%;
} .code button {
position: absolute;
top: 72rpx;
right: 0;
} .self-idcard-info {
margin-top: 15%;
display: flex;
flex-wrap: wrap;
justify-content: center;
width: 100%;
border: 1px dashed #ddd;
padding: 2%;
} .f-center {
width: 100%;
display: flex;
justify-content: center;
} .picture_list {
padding: 0 7%;
} .add-image {
background-color: #ddd;
color: #fff;
} .upload_progress {
width: 167rpx;
height: 164rpx;
} .apply {
width: 96%;
display: flex;
justify-content: space-between;
align-items: center;
padding: 2%;
border-top: 2px solid #ddd;
border-bottom: 2px solid #ddd;
} .apply-deposit {
font-weight: bold;
} .apply-deposit-amount {
font-weight: bold;
color: #fdd20c;
} .apply button {
margin: 0;
padding: 0;
width: 240rpx;
height: 60rpx;
line-height: 60rpx;
color: #fff;
background-color: #fdd20c;
} .read-man-pact {
display: flex;
justify-content: center;
padding: 2%;
} .read-man-pact checkbox-group {
display: flex;
align-items: center;
} .pact {
border-bottom: 1px solid #ddd;
} .submit-form-info {
display: flex;
justify-content: center;
} .submit-form-info button {
background-color: #fdd000;
width: 80%;
margin: 3% 0;
}

以上转自:https://www.cnblogs.com/cisum/p/9556736.html,逻辑如上

改:

步骤一:将文件 WxValidate.js 拷贝到utils目录

步骤二:在app.js中引入,并且实例化验证

//引入wxValidate.js文件
import wxValidate from "./utils/wxValidate";

//创建实例对象
wxValidate: (rules, messages) => new wxValidate(rules, messages),

/**原来是这么实例化的
 this.WxValidate = new WxValidate(rules, messages)**/

步骤三:在wxml中写

    <form report-submit bindsubmit="loginForm">
<input class="hide" name="reg_id" value="{{openid}}"/>
<view class="form-item">
<i class="iconfont icon-shouji"></i>
<input type="num" class="form-input" name="mobile" maxlength="11" value="{{remember.mobile}}" placeholder="请输入您的邮箱地址"/>
</view>
<view class="form-item">
<i class="iconfont icon-mima"></i>
<input type="text" password="true" class="form-input" name="password" value="{{remember.password}}" placeholder="请输入您的密码"/>
</view>
<view class="form-btn">
<button formType="submit">登录</button>
</view>
</form>

步骤四:在js =》 onLoad方法中写

//配置验证规则和提示信息, that.WxValidate 是自己定义的这个验证规则的变量名,也可以是that.WxValidate2
  
var app = getApp()
Page({

  onLoad: function (options) {
      that.WxValidate = app.wxValidate(
  {
  mobile: {
  required: true,
  tel:true
  },
  password: {
  required: true,
  }
   },
  {
  mobile: {
  required: '请输入手机号',
  tel:'请正确输入手机号'
  },
  password: {
  required: '请输入密码',
  }
  }
  )
  }
})

步骤五:在js =》 loginForm方法中写 ,这个方法名对应form 的 bindsubmit 事件

form bindsubmit="loginForm"
//表单提交校验
loginForm: function (e) {
var that = this;
    //失败报错
if (!that.WxValidate.checkForm(e)) { const error = that.WxValidate.errorList[0];
wx.showToast({
title: error.msg,
icon: 'none',
duration: 2000
});
return false
}
    //成功 后登录接口 }

表单提交校验结果:

that.WxValidate.errorList

form 表单的 的 bindsubmit 事件 传递的参数(e)结果如下

自定义添加验证规则,比如要验证手机号和身份证号同时

写在需要使用的页面onLoad

  that.WxValidate = app.wxValidate({
login_id: {
required: true,
telOrCard: true,
},
password: {
required: true
}
},
{
login_id: {
required: '请输入手机号/身份证号',
telOrCard: '请正确输入手机号/身份证号',
},
password: {
required: '请输入密码'
}
}) that.WxValidate.addMethod('telOrCard',(value, param) =>{
return (/^1[34578]\d{9}$/.test(value) || /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(value)) //匹配见WxValidate.js
}, '请正确输入手机号/身份证号')

必须添加的要放下面,否则会报错

微信小程序 - 表单验证插件WxValidate使用的更多相关文章

  1. 微信小程序——表单验证插件WxValidate的二次封装(二)

    在上一篇博客<微信小程序——仿jqueryValidate表单验证插件WxValidate的二次封装>中,我将WxValidate做了再次封装,简化了初始规则数据的构造,但是当有错误时页面 ...

  2. 微信小程序——表单验证插件WxValidate的二次封装(终极版)

    微信小程序表单验证前面的两篇文章做的效果总感觉都有点不太友好,第一篇里的效果是将错误信息通过对话框形式弹出来,这种形式在web形式下早已经淘汰了:第二篇是一次性全部显示所有的错误,然后3秒后自动消失, ...

  3. 微信小程序 - 表单验证插件WxValidate(自定义警告信息形式)

    弹出的形式对于用户来说,总是不太友好的 可能会出现层级问题(只需要设置一下提示的层级即可) WxValidate内置规则 以下代码拷贝即可使用~ wxml <form bindsubmit='s ...

  4. 微信小程序——仿jqueryValidate表单验证插件WxValidate的二次封装(一)

    在做web开发时,表单验证插件我们前端用的是jqueryValidate,由于个人主要精力是在后台JAVA开发上,为了让插件与后台更好的结合和使用,通过JAVA的自定义组件将表单全部重新写了一边,同时 ...

  5. 微信小程序-表单

    wxml <view> 按钮: <button size="{{buttom.size}}" type="{{buttom.type}}" p ...

  6. 微信小程序-表单组件

    button 按钮 注:button-hover 默认为{background-color: rgba(0, 0, 0, 0.1); opacity: 0.7;} 示例代码: /** wxss **/ ...

  7. 微信小程序-表单笔记

    发布页——向云端数据库上传多行文字和4张图片 第6,8行注释掉和不注释掉都可以实现数据上传 var _this = this; wx.cloud.callFunction({ name: 'searc ...

  8. 微信小程序 --- 表单输入验证(手机号、邮箱验证、输入非空)

    js代码 Page({                   /**    * 页面的初始数据    */         data: {         indicatorDots: false,   ...

  9. 微信小程序-表单笔记2

    本地添加4张图片并显示至页面——组件位置.设置样式.列表渲染 Q.button是一张图片,需要实现点击这张图片后选择本地图片后显示至页面,不知道怎么让本地图片将button挤到右边  S.在wxml中 ...

随机推荐

  1. Zookeeper安装使用及JavaAPI使用

    一.Zookeeper单击模式安装及使用 1.系统环境 2.导入JDK和Zookeeper包 1).使用SecureCRT工具打开SFTP连接,直接拖拽,到当前用户文件夹下,然后使用mv命令(mv 文 ...

  2. python-docx 设置标题heading的中文字体类型+设置正文的中文字体类型

    依赖包: from docx import Document from docx.shared import Pt from docx.shared import Inches from docx.o ...

  3. Http 调用netty 服务,服务调用客户端,伪同步响应.ProtoBuf 解决粘包,半包问题.

    实际情况是: 公司需要开发一个接口给新产品使用,需求如下 1.有一款硬件设备,客户用usb接上电脑就可以,但是此设备功能比较单一,所以开发一个服务器程序,辅助此设备业务功能 2.解决方案,使用Sock ...

  4. objective-c启用ARC时的内存管理 (循环引用)

    PDF版下载:http://download.csdn.net/detail/cuibo1123/7443125          在Objective-C中,内存的引用计数一直是一个让人比较头疼的问 ...

  5. Maven使用deploy上传jar包到远程库

    一.环境准备 首先需要在本地环境安装好maven,并且在环境变量配置好 二.配置远程库认证 需要在./conf/setting.xml(maven的配置文件,不要弄错)中配置需要远程上传库的地址,用户 ...

  6. Ubuntu下配置使用mysql

    很多生产环境都使用linux系统,相比于window系统,界面真的做的不够人性化,但是简洁高效也是linux的优点吧.在linux上使用mysql又是不一样的风景吧.

  7. Docker学习之——Node.js+MongoDB+Nginx环境搭建(一)

    最近在学习Node.js相关知识,在环境搭建上耗费了不少功夫,故此把这个过程写下来同大家分享一下,今天我先来介绍一下Docker,有很多人都写过相关知识,还有一些教程,在此我只想写一下,我的学习过程中 ...

  8. Linux用户及文件权限管理

    Linux用户及文件权限管理

  9. 我的阿里、腾讯暑期实习Offer经历

    三四月份对我拿来说是个忙碌的两个月,实验室项目到了关键的时刻,自己又需要抽身去找暑期实习,总之过得很快.值得欣慰的是幸运的拿到了阿里和腾讯的暑期实习offer,也算是对三四月份的忙碌一些回报吧.阿里的 ...

  10. 安装APK时引发INSTALL_PARSE_FAILED_MANIFEST_MALFORMED错误的几种可能(申明:来源于网络)

    安装APK时引发INSTALL_PARSE_FAILED_MANIFEST_MALFORMED错误的几种可能(申明:来源于网络) 地址:https://my.oschina.net/freestyle ...