当前位置:   article > 正文

小程序表单校验插件WxValidate,并对单字段校验进行优化_小程序 valid 校验优化

小程序 valid 校验优化

在进行Web开发时,对表单进行校验的插件有许多,较为常用的有jQuery Validate。而在小程序开发中也有一款常用的插件:WxValidate.js。该插件是参考jQuery Validate封装的,为小程序提供一套常用的验证规则。

一、github地址

下载地址:GitHub - wux-weapp/wx-extend: 微信小程序 - 扩展插件(发送请求、Promise API、表单验证、Restful API)

二、参数说明

参数类型描述
rulesobject验证字段的规则
messagesobject验证字段的提示信息

三、内置校验规则 

序号规则描述
1required: true这是一个必填字段
2email: true请输入有效的电子邮件地址
3tel: true请输入11位的手机号码
4url: true请输入有效的网址
5date: true请输入有效的日期
6dateISO: true请输入有效的日期(ISO),例如:2009-06-23, 1998/01/22
7number: true请输入有效的数字
8digits: true只能输入数字
9idcard: true请输入18位的有效身份证
10equalTo: 'field'输入值必须和field值相同
11contains: 'ABC'输入值必须包含ABC
12minlength: 6最少输入6个字符
13maxlength: 18最多可以输入18个字符
14rangelength: [5, 10]请输入长度在5和10之间的字符
15min: 5请输入不小于5的值
16max: 10请输入不小于10的数值
17range: [5, 10]请输入范围在5到10之间ov

四、常用实例方法

名称返回类型描述
checkForm(e)boolean验证所有字段的规则,返回验证是否通过
valid()boolean返回验证是否通过
size()number返回错误信息的个数
validationErrors()array返回所有错误信息
addMethod(name, method, message)boolean添加自定义验证方法

五、具体实例

  1. //验证字段的规则
  2. const rules = {
  3. email: {
  4. required: true,
  5. email: true
  6. },
  7. phone: {
  8. required: true,
  9. tel: true
  10. },
  11. fax: {
  12. required: true,
  13. fax: true
  14. }
  15. }
  16. //验证字段的提示信息,若不传则调用默认的信息
  17. const messages = {
  18. email: {
  19. required: "请输入邮箱",
  20. email: "请输入正确的邮箱"
  21. },
  22. phone: {
  23. required: "请输入手机号",
  24. tel: "请输入正确的手机号"
  25. },
  26. fax: {
  27. required: "请输入传真号码",
  28. fax: "请输入正确传真号码"
  29. }
  30. }
  31. Page({
  32. onLoad: function(){
  33. //创建实例
  34. this.WxValidate = new WxValidate(rules, messages);
  35. //自定义规则
  36. this.WxValidate.addMethod('fax', function(value, param){
  37. return WXvali.optional(value) || /^([0-9]{3,4})?[0-9]{7,8}$/.test(value);
  38. }, '请输入正确传真号码');
  39. },
  40. submitForm: function(e){
  41. const data = e.detail.value;
  42. //调用校验方法
  43. if(!this.WxValidate.checkForm(data)){
  44. const error = this.WxValidate.errorList[0];
  45. //提示错误信息
  46. wx.showToast({
  47. title: error.msg
  48. });
  49. return false;
  50. }
  51. }
  52. });

六、对插件进行优化,支持单个字段校验

在实际开发中,偶尔会遇到对某个字段进行校验情况,但目前文档提供的函数只能校验全部,故在源码中稍作修改即可实现,在WxValidate.js源码中添加代码如下:

  1. /**
  2. * 验证某个字段
  3. * @param {String} param 字段名
  4. * @param {Object} data 数据集
  5. */
  6. checkField(param, data){
  7. this.__initData()
  8. this.setView(param)
  9. this.checkParam(param, this.rules[param], data)
  10. return this.valid()
  11. }

调用实例:

  1. Page({
  2. ...,
  3. submitForm: function(e){
  4. const data = e.detail.value;
  5. //这里以只校验phone字段为例
  6. if(!this.WxValidate.checkField('phone', data)){
  7. const error = this.WxValidate.errorList[0];
  8. //提示错误信息
  9. wx.showToast({
  10. title: error.msg
  11. });
  12. return false;
  13. }
  14. }
  15. });

七、旧密码与新密码不等,新密码与再次密码相等

  1. const rules = {
  2. oldpwd: { required: true },
  3. newPwd: { required: true, minlength: 6, maxlength: 20, unequalTo: "oldpwd" },
  4. aPwd: { required: true, minlength: 6, maxlength: 20, equalTo: "newPwd" }
  5. }
  6. const messages = {
  7. oldpwd: { required: "请输入原密码!" },
  8. newPwd: { required: "请输入新密码!", minlength: "最少要输入6个字符。", maxlength: "最多可以输入20个字符。", unequalTo: "新密码不能与旧密码相同" },
  9. aPwd: { required: "请再次输入新密码!", minlength: "最少要输入6个字符。", maxlength: "最多可以输入20个字符。", equalTo: "两次密码输入不一致" }
  10. }
  11. //实例对象
  12. let WxVal = new WxValidate(rules, messages);
  13. //1.WxValidate中有equalTo,则直接使用,rules中equalTo传入对比的字段即可,如aPwd中的equalTo。
  14. //2.比较不同的校验规则WxValidate没有,这里可以自己添加不等的校验规则(新密码与旧密码不能相等)
  15. WxVal.addMethod('unequalTo', function(value, param){
  16. return WxVal.optional(value) || WxVal.data[param]!=value;
  17. }, '新密码不能与旧密码相同');

八、添加自定义规则

如果不想使用addMethod()方法添加校验规则,直接在WxValidate.js源码中__initDefaults方法和__initMethods方法中添加校验规则和提示信息即可。

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

闽ICP备14008679号