微信小程序表单验证(WxValidate使用)
参考博客:
https://www.cnblogs.com/zhangxiaoyong/p/10166951.html https://github.com/wux-weapp/wx-extend/blob/master/src/pages/validate/index.js#L1
1:
首先插件的下载地址和官方文档都在WxValidate下载地址和文档地址
具体的WxValidate.js文件的位置在wx-extend/src/assets/plugins/wx-validate/WxValidate.js
首先引入的方法就是将插件文件拷贝到你所需要的文件目录下
2:之后可以采用局部引用的方式将插件引入到你所需要的页面的JS文件里,具体操作如下
import WxValidate from "../../utils/WxValidate";
3:
之后就是注意在wxml文件中对表单组件的数据绑定,否则无论表单组件如何填写,都无法验证规则。
主要的方法就是在需要验证的input框内加入value值的绑定,
表单组件的绑定方法如下:
<!--pages/my/my.wxml-->
<view>
<view class="tip">
<text class="iconfont icon-approve"></text>
<text>身份认证将提高租房成功率!</text>
</view>
<form bindsubmit="formSubmit">
<view>
<label>昵称</label>
<input name="nickName" value="{{form.nickName}}" />
</view>
<view>
<label>手机</label>
<input name="phone" type="text" value="{{form.phone }}" />
</view>
<view>
<label>年龄</label>
<input name="age" type="number" value="{{form.age}}" />
</view>
<view>
</view>
<view>
<label>性别</label>
<radio-group name="sex" value="1">
<label class="radio">
<block wx:if="{{user.sex == '1'}}">
<radio value="1" checked="{{true}}" />
</block>
<block wx:else>
<radio value="0" />
</block>
男
</label>
<label class="radio">
<block wx:if="{{user.sex == '2'}}">
<radio value="2" checked="{{true}}" />
</block>
<block wx:else>
<radio value="女" />
</block>
女
</label>
</radio-group>
</view>
<view class="uppic">
<image src="" bindtap="upfile"/>
<image src="{{tempFilePaths}}"></image>
</view>
<view class="sendbtn">
提交信息
<button type="primary" form-type="submit">提交信息</button>
</view>
</form>
</view>
4:然后在js文件中加入form表单的绑定
Page({
data: {
form: {//增加form子元素
nickName:'',
phone:'',
age:'',
items: [
{ name: '1', value: '男', checked: 'true' },
{ name: '2', value: '女' }
],
date: '请选择出生年月',
casArray: ['身份证', '护照', '其他/港澳台居民身份证', '外国人永久居留身份证'],
},
},
5:onLoad函数中加入验证规则函数
onLoad() {
this.initValidate()//验证规则函数
},
6:验证规则和报错规则的代码
//报错
showModal(error) {
wx.showModal({
content: error.msg,
showCancel: false,
})
},
//验证函数
initValidate() {
const rules = {
nickName: {
required: true,
minlength:2
},
phone:{
required:true,
tel:true
},
age:{
required:true, },
sex:{
required:true,
} }
const messages = {
nickName: {
required: '请填写姓名',
minlength:'请输入正确的名称'
},
phone:{
required:'请填写手机号',
tel:'请填写正确的手机号'
},
age:{
required:'请填写年纪',
},
sex:{
required:'请填写性别',
}
}
this.WxValidate = new WxValidate(rules, messages)
},
//调用验证函数
formSubmit: function(e) {
console.log('form发生了submit事件,携带的数据为:', e.detail.value)
const params = e.detail.value
//校验表单
if (!this.WxValidate.checkForm(params)) {
const error = this.WxValidate.errorList[0]
this.showModal(error)
return false
}
this.showModal({
msg: '提交成功'
})
}
总体js页面:
// pages/my/my.js import WxValidate from "../../utils/WxValidate";
const app=getApp();
Page({
data: {
form: {//增加form子元素
nickName:'',
phone:'',
age:'',
items: [
{ name: '1', value: '男', checked: 'true' },
{ name: '2', value: '女' }
],
date: '请选择出生年月',
casArray: ['身份证', '护照', '其他/港澳台居民身份证', '外国人永久居留身份证'],
},
},
onLoad() {
this.initValidate()//验证规则函数
}, showModal(error) {
wx.showModal({
content: error.msg,
showCancel: false,
})
},
initValidate() {
const rules = {
nickName: {
required: true,
minlength:2
},
phone:{
required:true,
tel:true
},
age:{
required:true, },
sex:{
required:true,
} }
const messages = {
nickName: {
required: '请填写姓名',
minlength:'请输入正确的名称'
},
phone:{
required:'请填写手机号',
tel:'请填写正确的手机号'
},
age:{
required:'请填写年纪',
},
sex:{
required:'请填写性别',
}
}
this.WxValidate = new WxValidate(rules, messages)
},
//调用验证函数
formSubmit: function(e) {
console.log('form发生了submit事件,携带的数据为:', e.detail.value)
const params = e.detail.value
//校验表单
if (!this.WxValidate.checkForm(params)) {
const error = this.WxValidate.errorList[0]
this.showModal(error)
return false
}
this.showModal({
msg: '提交成功'
})
} })
参考页面:
import WxValidate from '../../assets/plugins/wx-validate/WxValidate' const App = getApp() Page({
data: {
form: {
gender: '',
assistance: '',
email: '',
tel: '',
idcard: '',
password: '',
confirmPassword: '',
countryIndex: '',
slider: '',
agree: '',
textarea: '',
},
radio: [{
name: '男',
value: 'male',
checked: !1,
},
{
name: '女',
value: 'female',
},
],
checkbox: [{
name: '黄药师',
value: '0001',
checked: !1,
},
{
name: '欧阳锋',
value: '0002',
},
{
name: '段智兴',
value: '0003',
},
{
name: '洪七公',
value: '0004',
},
],
countries: [
'中国',
'美国',
'英国',
],
component: App.components[2],
},
onLoad() {
this.initValidate()
console.log(this.WxValidate)
},
showModal(error) {
wx.showModal({
content: error.msg,
showCancel: false,
})
},
submitForm(e) {
const params = e.detail.value console.log(params) // 传入表单数据,调用验证方法
if (!this.WxValidate.checkForm(params)) {
const error = this.WxValidate.errorList[0]
this.showModal(error)
return false
} this.showModal({
msg: '提交成功',
})
},
initValidate() {
// 验证字段的规则
const rules = {
gender: {
required: true,
},
assistance: {
required: true,
assistance: true,
},
email: {
required: true,
email: true,
},
tel: {
required: true,
tel: true,
},
idcard: {
required: true,
idcard: true,
},
password: {
required: true,
minlength: 6,
maxlength: 15,
},
confirmPassword: {
required: true,
minlength: 6,
maxlength: 15,
equalTo: 'password',
},
countryIndex: {
required: true,
},
slider: {
required: true,
min: 40,
max: 80,
},
agree: {
required: true,
},
textarea: {
required: true,
contains: '自愿',
},
} // 验证字段的提示信息,若不传则调用默认的信息
const messages = {
gender: {
required: '请选择性别',
},
assistance: {
required: '请勾选1-2个敲码助手',
},
email: {
required: '请输入邮箱',
email: '请输入正确的邮箱',
},
tel: {
required: '请输入手机号',
tel: '请输入正确的手机号',
},
idcard: {
required: '请输入身份证号码',
idcard: '请输入正确的身份证号码',
},
password: {
required: '请输入新密码',
minlength: '密码长度不少于6位',
maxlength: '密码长度不多于15位',
},
confirmPassword: {
required: '请输入确认密码',
minlength: '密码长度不少于6位',
maxlength: '密码长度不多于15位',
equalTo: '确认密码和新密码保持一致',
},
countryIndex: {
required: '请选择国家/地区',
},
slider: {
required: '请选择年龄',
min: '年龄不小于18',
max: '年龄不大于60',
},
agree: {
required: '请同意我们的声明',
},
textarea: {
required: '请输入文本',
contains: '请输入文本(必须含有自愿两字)',
},
} // 创建实例对象
this.WxValidate = new WxValidate(rules, messages) // 自定义验证规则
this.WxValidate.addMethod('assistance', (value, param) => {
return this.WxValidate.optional(value) || (value.length >= 1 && value.length <= 2)
}, '请勾选1-2个敲码助手')
},
radioChange(e) {
const value = e.detail.value
const radio = this.data.radio
const items = radio.map(n => {
return Object.assign({}, n, {
checked: n.value === value,
})
})
console.log(items)
this.setData({
radio: items,
'form.gender': value,
})
},
checkboxChange(e) {
const values = e.detail.value
const checkbox = this.data.checkbox
const items = checkbox.map(n => {
return Object.assign({}, n, {
checked: values.includes(n.value),
})
})
console.log(items)
this.setData({
checkbox: items,
'form.assistance': values,
})
},
bindCountryChange(e) {
const value = e.detail.value
this.setData({
'form.countryIndex': value,
})
},
})
参考:
效果:
微信小程序表单验证(WxValidate使用)的更多相关文章
- 微信小程序表单校验WxValidate.js使用
WxValidate插件是参考 jQuery Validate 封装的,为小程序表单提供了一套常用的验证规则,包括手机号码.电子邮件验证等等,同时提供了添加自定义校验方法,让表单验证变得更简单. 首先 ...
- 微信小程序表单验证
参考:http://www.cnblogs.com/zhangxiaoyong/p/10166951.html
- 微信小程序表单弹窗实例
开发中有时候会碰到需要一个表单弹窗来处理数据的提交处理,然后这次发布的这套源码就是解决这个问题! <!--button--> <view class="btn" ...
- .NET CORE 微信小程序消息验证的坑
进入微信小程序,点击开发->选择消息推送->扫码授权,填写必要参数 进入接口开发: /// <summary> /// 验证小程序 /// </summary> / ...
- 微信小程序——单选项
对于小程序单选,官方文档已经贴出了代码,我这里也不做过多解释,只是分享给大家一个小功能 一般在单选或者多选时,都会出现“其他”这个选项,如果通过input焦点事件.失焦事件来控制,代码会很繁琐 这里可 ...
- 微信小程序——表单验证插件WxValidate的二次封装(终极版)
微信小程序表单验证前面的两篇文章做的效果总感觉都有点不太友好,第一篇里的效果是将错误信息通过对话框形式弹出来,这种形式在web形式下早已经淘汰了:第二篇是一次性全部显示所有的错误,然后3秒后自动消失, ...
- 微信小程序_(表单组件)button组件的使用
微信小程序表单组件button官方文档 传送门 Learn 一.button组件的使用 一.button组件的使用 size:按钮的大小[默认值default] type:按钮的样式类型[默认值def ...
- 微信小程序——获取formid
小程序对模板消息推送做了相应的限制:如果用户主动触发小程序表单提交1次,小程序可在7天内向用户主动推送1条模版消息,如果用户通过小程序完成支付,小程序可在7天内向用户主动推送3条模版消息.(formi ...
- 微信小程序添加外部地图服务数据
先上效果: 缘起 使用微信小程序做地图相关功能的时候,有个需求是需要接入自己发布的地图服务.查看微信小程序地图组件文档,发现它对地图相关的支持很少,只有一些基础功能,比如添加点.线.面.气泡和一些常规 ...
随机推荐
- python编写购物车新写法
用另一种方式完成购物车的功能实现 #!/usr/bin/python zijin = input("请输入资金:") if zijin.isdigit(): zijin = int ...
- JS 函数提升&变量提升以及函数声明&函数表达式的区别
感谢原文作者:迟早会有猫 原文链接:https://www.cnblogs.com/SidselLoong/p/10515809.html 今天看js的变量提升问题,里面提到了函数提升.然后发现自己之 ...
- textarea自适应高(宽)度
转载请注明来源:https://www.cnblogs.com/hookjc/ 方法一: <textarea rows=1 cols=40 style='overflow:scroll;over ...
- smartimageview 的原理
自定义的控件在布局文件中的引用都需要指定类的完整路径 1.自定义了一个MyImageview类继承了Imageview,添加三个构造方法 2.添加一个setImageUrl方法接受一个图片ur ...
- git 撤销,放弃本地修改,放弃已提交修改
一, 未使用 git add 缓存代码时. 可以使用 git checkout -- filepathname (比如: git checkout -- readme.md ,不要忘记中间的 &quo ...
- CABasicAnimation动画
使用CABasicAnimation动画: CALayer *znzLayer; = [[CALayer alloc]init]; //创建不断该表CALayer的transform属性动画 CABa ...
- mysql入门基础增删查改
数据查询语法(DQL) DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端. 语法: SELECT selection_list /*要查询的列名称*/ F ...
- 集合、Collection、list、set、HashSet
一.集合的理解:将多个数据放在一起 简介: 1).可以动态保存任意多个对象,使用比较方便!2).提供了一系列方便的操作对象的方法: add.remove.set. get等 1.集合中的实现和继承图 ...
- 4G无线全网通太阳能水文设备电源监测系统BMS110
钡铼技术BMS110模块可实现4路电池电压.2路模拟量.2路数字量和1路温度测量,支持Modbus RTU over TCP和MQTT通讯协议,DC9-36V电源供电.BMS110可应用于各种有使用蓄 ...
- 关于SpringCloud中,使用 Hystrix的问题
springCloud升级后.导致 HtystrixDashboard 默认的servlet请求路径修改了 将业务的微服务使用 HtystrixDashboard 仪表盘第一次监控时出现 Unable ...