微信小程序表单验证(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 ...
- 微信小程序添加外部地图服务数据
先上效果: 缘起 使用微信小程序做地图相关功能的时候,有个需求是需要接入自己发布的地图服务.查看微信小程序地图组件文档,发现它对地图相关的支持很少,只有一些基础功能,比如添加点.线.面.气泡和一些常规 ...
随机推荐
- NoSuchMethodError错误
发生原因: 一个项目中包含有相同名字,但内容不同的包 解决办法:删除其中暂时不用的包 后记:如果不知道哪一个包是多余的,直接用IDE查找:找到该类,然后将该包进行反编译,再次导入该项目,再找到该类,出 ...
- JAVA多线程提高十四:同步工具Exchanger
Exchanger可以在对中对元素进行配对和交换的线程的同步点.每个线程将条目上的某个方法呈现给 exchange 方法,与伙伴线程进行匹配,并且在返回时接收其伙伴的对象.Exchanger 可能被视 ...
- Tomcat下 session 持久化问题(重启服务器session 仍然存在)
感谢大佬:https://www.iteye.com/blog/xiaolongfeixiang-560800 关于在线人数统计,大都使用SessionListener监听器实现. SessionLi ...
- WSL2设置局域网网访问
标签: wsl2 局域网 docker WSL2设置内网访问 1.先找到虚拟机的ip 2.设置端口转发(需要管理员权限运行powershell) 3.删除端口转发 4.配置入站规则. 1.先找到 ...
- Jackson 高级应用
转自:https://www.ibm.com/developerworks/cn/java/jackson-advanced-application/index.html 格式处理(含日期格式) 不同 ...
- UITabBarController的基本使用
- Kubernetes实战之部署ELK Stack收集平台日志
主要内容 1 ELK概念 2 K8S需要收集哪些日志 3 ELK Stack日志方案 4 容器中的日志怎么收集 5 K8S平台中应用日志收集 准备环境 一套正常运行的k8s集群,kubeadm安装部署 ...
- 项目架构(结构)搭建:主流结构(UITabBarController + 导航控制器)
/* 项目架构(结构)搭建:主流结构(UITabBarController + 导航控制器) -> 项目开发方式 1.storyboard 2.纯代码 */ @interface AppDele ...
- 利用ICMP协议的PING命令获取客户端当前网络质量 by徐文棋
无论在windows下,linux也好,unix也好,都可以通过 Ping命令获得当前设备的网络延迟,延迟是客户端到服务端的网络响应时间.通常延迟越低,反应速度越快 这里使用了SimplePing ...
- pandas中常用的操作一
pandas中常用的功能: 1.显示所有的列的信息,999表示显示最大的列为999 pd.options.display.max_columns=999 2.读取excel时设置使用到列的名称,和列的 ...