当前位置:   article > 正文

微信小程序——仿jqueryValidate表单验证插件WxValidate的二次封装_微信小程序表单验证 类似jquery.validate

微信小程序表单验证 类似jquery.validate

在做web开发时,表单验证插件我们前端用的是jqueryValidate,由于个人主要精力是在后台JAVA开发上,为了让插件与后台更好的结合和使用,通过JAVA的自定义组件将表单全部重新写了一边,同时把jqueryValidate做了再次封装,新增了一些新的常用判断,也修改了一些关键字。

小程序同样也存在验证的问题,在网上搜索了一下,目前用的比较多的是WxValidate,下载地址和用法如下

github: https://github.com/skyvow/wx-extend

但是这个插件用起来比较麻烦,js要写很多的预设代码,所以本人又在此插件的基础上做了再次封装。

接下来直接说用法,以不为空(notEmpty)和长度(size)为例。

一、wxml文件

  1. <form bindsubmit="formSubmit">
  2. <view class="wide-info">
  3. <view class="wide-info-list">
  4. <!--姓名-->
  5. <view class="info-list">
  6. <view class="info-list-1eft">
  7. <text class="notEmptyClass">姓名</text>
  8. </view>
  9. <view class="info-list-right">
  10. <input id="name" name='name' placeholder='请输入' value='{{form.name}}' class="wxValidate inputName"
  11. data-validate="notEmpty|size[4,10]" data-fieldname="姓名"/>
  12. </view>
  13. </view>
  14. <!--密码-->
  15. <view class="info-list">
  16. <view class="info-list-1eft dark">
  17. <text class="notEmptyClass">密码</text>
  18. </view>
  19. <view class="info-list-right">
  20. <input type="text" id="password" name="password" placeholder='请输入' value='{{form.age}}' class="wxValidate inputName"
  21. data-fieldname="密码" data-validate="notEmpty"/>
  22. </view>
  23. </view>
  24. <view class="info-list">
  25. <view class="info-list-1eft dark">
  26. <text class="notEmptyClass">重复密码</text>
  27. </view>
  28. <view class="info-list-right">
  29. <input type="text" id="cfpassword" name="cfpassword" placeholder='请输入' value='{{form.age}}' class="wxValidate inputName"
  30. data-fieldname="重复密码" data-validate="notEmpty|equals[password]"/>
  31. </view>
  32. </view>
  33. <!--年龄-->
  34. <view class="info-list">
  35. <view class="info-list-1eft dark">
  36. <text class="notEmptyClass">年龄</text>
  37. </view>
  38. <view class="info-list-right">
  39. <input type="text" id="age" name="age" placeholder='请输入' value='{{form.age}}' class="wxValidate inputName"
  40. data-fieldname="年龄" data-validate="notEmpty|int|range[18,60]"/>
  41. </view>
  42. </view>
  43. </view>
  44. </view>
  45. <!--按钮--->
  46. <view class="buttons-kind">
  47. <button class="fabu" form-type="submit">发布</button>
  48. </view>
  49. </form>

  重点:每一个表单控件必须有3个属性和一个特定的样式关键字。

属性说明
id表单控件的ID
data-validate

需要做相关验证的关键字,多种验证用‘|’隔开,例如上面的姓名要验证不为空同时长度在4-10个字符:

data-validate="notEmpty|size[4,10]"

data-fieldname当出现错误时,显示在错误提示中的表单名称。

 

样式说明

wxValidate

代表此表单控件要做相关验证,必须写。

 

二.js文件

  1. import WxValidate from '../../utils/WxValidate.js'
  2. const util = require('../../utils/util.js')
  3. Page({
  4. /**
  5. * 页面的初始数据
  6. */
  7. data: {
  8. date:""
  9. },
  10. /**
  11. * 生命周期函数--监听页面加载
  12. */
  13. onLoad: function (options) {
  14. },
  15. /**
  16. * 生命周期函数--监听页面初次渲染完成
  17. */
  18. onReady: function () {
  19. //验证方法
  20. this.WxValidate = new WxValidate();
  21. },
  22. bindDateChange : function(e){
  23. this.setData({date:e.detail.value})
  24. },
  25. /***调用验证函数***/
  26. formSubmit: function (e) {
  27. console.log('form发生了submit事件,携带的数据为:', e.detail.value)
  28. const params = e.detail.value
  29. e.detail.value.osscation_address = this.data.osscation_address
  30. e.detail.value.date = this.data.date
  31. console.log(e.detail.value)
  32. console.log(this.WxValidate.rules)
  33. console.log(this.WxValidate.messages)
  34. //校验表单
  35. if (!this.WxValidate.checkForm(params)) {
  36. const error = this.WxValidate.errorList[0]
  37. util.alert("错误提示",error.msg)
  38. return false
  39. }
  40. //向后台发送时数据 wx.request...
  41. util.alert("成功提示", '提交成功 :' + e.detail.value.date)
  42. }
  43. })

  重点: 此页面只要在渲染完的方法里new WxValidate();然后在提交的操作里加上判断即可。例如下图的效果。

 

三、验证关键字

关键字说明用法
notEmpty不能为空 

size[4,10]

输入字符的长度

可以只写一个数字,注意根据判断的不同,判断要不要写“,”。例如

长度最小为4则可写成:size[4];

长度最大为10则可写成:size[,10],注意逗号不能少;

int

整数 

number

数字 

range[18,60]

数值的范围

类似与size,但此关键字还多一种判断,例如是不包含首尾的数值,例如

薪酬必须大于5000 小于等于20000: range(5000,20000];

或者年龄必须18-60之间,但不包含18岁和60岁:range(18,60)

equals[id]

等于另一个表单的值

id:表示另一个控件的id,此处也可以写成:

equals[id,另一个控件的名称]格式,例如:equals[id,手机号]

输入值必须和【手机号】相同!”;若后面的名称不填写,则验证出错时默认提示的是“请输入与上面相同的密码

tel

电话格式(中国大陆) 
phone手机格式(中国大陆) 

idcard

身份证(中国大陆) 

date

日期 

dateISO

日期(ISO),例如:2009-06-23,1998/01/22 
email邮箱地址 
url网站地址 

 PS:这个控件最终应该还是要和wx.request 封装到一起使用,具体等我把wx.request封装好了再写了。    

插件下载:https://github.com/zhuiyue82/wx     

                      

 

    

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/131740
推荐阅读
相关标签
  

闽ICP备14008679号