欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

微信小程序开发之表单验证(WxValidate使用)

微信小程序开发之表单验证(WxValidate使用)

2018年08月24日 15:01:59 酒香飘在巷子里 阅读数:5352                
 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41041379/article/details/82017301

微信小程序的开发框架个人感觉大体上跟VUE是差不多的,但是他的表单组件没有自带的验证功能,因此开发小程序的表单验证时候一般有两种方法,一是自己裸写验证规则,但是需要比较扎实的正则表达式基础,一种是利用官方社区开发的WxValidate插件进行表单验证。

WxValidate插件是参考 jQuery Validate 封装的,为小程序表单提供了一套常用的验证规则,包括手机号码、电子邮件验证等等,同时提供了添加自定义校验方法,让表单验证变得更简单。

首先插件的下载地址和官方文档都在WxValidate下载地址和文档地址                

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

首先引入的方法就是将插件文件拷贝到你所需要的文件目录下

               

之后可以采用局部引用的方式将插件引入到你所需要的页面的JS文件里,具体操作如下

  1. //index.js页面下                            
  2. import WxValidate from '../../utils/WxValidate.js'                            
  3. const app = getApp()
  4. Page({
  5. data: {
  6. form: {
  7. name: '',
  8. phone: ''                            
  9. }
  10. }
  11. })
               

这里需要注意的是文件路径的写法

/是从根目录开始算起 ./是从引入文件的目录文件开始,此例子中就是index.js所在目录开始算起 ../就是从引入文件的父级目录开始算起,此例子中index文件夹目录,而../../就是从pages所在目录开始算起,如果这个地方的文件路径写错,编译就会报错

之后就是注意在wxml文件中对表单组件的数据绑定,否则无论表单组件如何填写,都无法验证规则。

表单组件的绑定方法如下

  1. //wxml页面下
  2. <form bindsubmit="formSubmit">                            
  3. <view class="weui-cells__title">请填写个人信息</view>                            
  4. <view class="weui-cells weui-cells_after-title">                            
  5. <view class="weui-cell weui-cell_input">                            
  6. <view class="weui-cell__hd">                            
  7. <view class="weui-label">姓名</view>                            
  8. </view>                            
  9. <view class="weui-cell__bd">                            
  10. <input class="weui-input" name='name' value='{{form.name}}' placeholder="请输入姓名" />                            
  11. </view>                            
  12. </view>                            
  13. <view class="weui-cell weui-cell_input weui-cell_vcode">                            
  14. <view class="weui-cell__hd">                            
  15. <view class="weui-label">手机号</view>                            
  16. </view>                            
  17. <view class="weui-cell__bd">                            
  18. <input class="weui-input" name='phone' type='number' value='{{form.phone}}' placeholder="请输入手机号" />                            
  19. </view>                            
  20. </view>                            
  21. </view>                            
  22. </form>                            
               

主要的方法就是在需要验证的input框内加入value值的绑定,其他的组件同理

然后在js文件中加入form表单的绑定

  1. //index.js                            
  2. Page({
  3. data: {
  4. form: {
  5. name: '',
  6. phone: ''                            
  7. }
  8. }
  9. })
               

然后就是最重要的验证规则的书写了

首先要在onLoad函数中加入验证规则函数

  1. // onLoad中有多个函数的写法,onLoad函数内写函数名,函数在onLoad外定义                            
  2. onLoad() {
  3. this.getuser()
  4. this.initValidate()//验证规则函数                            
  5. }
  6. //onLoad中只有一个函数的写法                            
  7. onLoad:function(){
  8. rules:{}
  9. messages:{}
  10. }
               

此处需要注意的是一定要在js文件中onLoad验证规则,否则编译会报checkform is not a function 

然后是验证规则和报错规则的代码

  1. //报错                            
  2. showModal(error) {
  3. wx.showModal({
  4. content: error.msg,
  5. showCancel: false,
  6. })
  7. },
  8. //验证函数                            
  9. initValidate() {
  10. const rules = {
  11. name: {
  12. required: true,
  13. minlength:2                            
  14. },
  15. phone:{
  16. required:true,
  17. tel:true                            
  18. }
  19. }
  20. const messages = {
  21. name: {
  22. required: '请填写姓名',
  23. minlength:'请输入正确的名称'                            
  24. },
  25. phone:{
  26. required:'请填写手机号',
  27. tel:'请填写正确的手机号'                            
  28. }
  29. }
  30. this.WxValidate = new WxValidate(rules, messages)
  31. },
  32. //调用验证函数                            
  33. formSubmit: function(e) {
  34. console.log('form发生了submit事件,携带的数据为:', e.detail.value)
  35. const params = e.detail.value
  36. //校验表单                            
  37. if (!this.WxValidate.checkForm(params)) {
  38. const error = this.WxValidate.errorList[0]
  39. this.showModal(error)
  40. return false                            
  41. }
  42. this.showModal({
  43. msg: '提交成功'                            
  44. })
  45. }
               

 这里我只写了一点字段的验证,官方文档中还包含了很多字段的验证规则,我就不一一写出来了,这里需要注意的是在initValidate()中要实例化对象,至此表单验证就已经完成了

 下面看看演示效果

演示效果                

 

大家还可以自行跑一下在上面下载的实例,里面有更多表单验证的效果

来自  https://blog.csdn.net/weixin_41041379/article/details/82017301

普通分类: