微信小程序表单验证插件WxValidate的二次封装功能(终极版)


Posted in Javascript onSeptember 03, 2019

微信小程序表单验证前面的两篇文章做的效果总感觉都有点不太友好,第一篇里的效果是将错误信息通过对话框形式弹出来,这种形式在web形式下早已经淘汰了;第二篇是一次性全部显示所有的错误,然后3秒后自动消失,

这种在极端情况下也不太好,例如我例子里的一页的表单个数非常多的情况下,可能后面的还没看到就消失了。所以最近又重新做了一版,最终版的效果如下图:错误信息一次性全部显示,可以通过点击信息框让其消失,将自动消失时间设置的稍微长点,例如10秒,这样就能比较好的兼顾效果和使用上的便捷。

微信小程序表单验证插件WxValidate的二次封装功能(终极版)

先讲讲最终版与前面2版的不同点

1.前面版本中提到,表单空间里需要添加3个参数:id,data-fieldname,data-validate 。最终版中只需要 data-validate 即可。

2.由于需要点击错误信息框后使其隐藏,则需要通过微信小程序wxs事件响应功能,新增事件

一、util.wxs文件

module.exports = {
 hiddenValidateError: hiddenValidateError
}
function hiddenValidateError(event, ownerInstance) {
 var index= event.target.dataset.index;
 var instance = ownerInstance.selectComponent('.validateText'+index) // 返回组件的实例
 instance.setStyle({
 "visibility": "hidden"
 }) 
}

二、wxml文件

<wxs module="wxs" src="../../utils/util.wxs"></wxs>
<block wx:for="{{arrValidate}}" wx:for-item="validateErrorText">
 <view class="validateText validateText{{validateErrorText.index}}" animation="{{vaildateErrorText_animation}}" style="visibility:{{validateErrorText.visibility}};top:{{validateErrorText.top}};left:{{validateErrorText.left}};" data-index="{{validateErrorText.index}}" bindtap="{{wxs.hiddenValidateError}}">
 {{validateErrorText.msg}}
 </view>
</block>
<form bindsubmit="formSubmit">
<view class="wide-info">
<view class="wide-info-list">
<!--姓名-->
<view class="info-list">
<view class="info-list-1eft">
<text class="notEmptyClass">姓名</text>
</view>
<view class="info-list-right">
<input name='tname' placeholder='请输入' value='{{form.tname}}' class="wxValidate inputName"
data-validate="notEmpty|size[4,10]"/>
</view>
</view>
......
</view>
<!--按钮--->
<view class="buttons-kind">
<button class="fabu" form-type="submit">发布</button>
</view>
</form>

三、form.js

onReady: function () {
 //验证方法
 this.WxValidate = new WxValidate();
},
formSubmit: function (e) {
 util.loadingMsg("数据提交中,请稍后...");
 var that = this;
 console.log('form发生了submit事件,携带的数据为:', e.detail.value)
 const params = e.detail.value 
 //校验表单
 if (!this.WxValidate.checkForm(params)) {
  var arrValidate = new Array();
  let top = 0;
  for (const i in this.WxValidate.errorList){
  const error = this.WxValidate.errorList[i]
  if(i==0){   
   top = error.top;
  }  
  const validateErrorText= {id:error.param, visibility: "inherit", top: error.top + "px", left: error.left + "px", msg: error.msg }  
  arrValidate[i]=validateErrorText;
  }
  this.setData({arrValidate: arrValidate});

)
  wx.pageScrollTo({
  scrollTop: top,
  duration:500
  });
  setTimeout(function(){    
  util.fadeOut(that, "vaildateErrorText_animation", 0);
  },10000);
  wx.hideLoading(); 
  return false
 } 
 wx.hideLoading();
 //向后台发送时数据 wx.request... 
 util.alert("成功提示", '提交成功 :' + e.detail.value.date);
 }

以上代码就是提交表单用到的关键代码,在实际使用是,最好将提交功能也做一个封装,这样以后就不用每次都写这么多代码了,关于提交功能的封装,等有空的时候在写了,表单验证插件终极版本在点击下方路径下载:

https://github.com/zhuiyue82/wx-wxValidate2.0

总结

以上所述是小编给大家介绍的微信小程序表单验证插件WxValidate的二次封装功能(终极版),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
更正确的asp冒泡排序
May 24 Javascript
jQuery 版本的文本输入框检查器Input Check
Jul 09 Javascript
js 弹出框 替代浏览器的弹出框
Oct 29 Javascript
快速解决FusionCharts联动的中文乱码问题
Dec 04 Javascript
JS弹出层的显示与隐藏示例代码
Dec 27 Javascript
原生JavaScript编写俄罗斯方块
Mar 30 Javascript
Three.js学习之网格
Aug 10 Javascript
js图片延迟加载(Lazyload)三种实现方式
Mar 01 Javascript
Bootstrap Table从零开始
Jun 30 Javascript
JavaScript定义函数的三种实现方法
Sep 23 Javascript
vue.js或js实现中文A-Z排序的方法
Mar 08 Javascript
微信小程序新闻网站详情页实例代码
Jan 10 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
Sep 03 #Javascript
vue路由教程之静态路由
Sep 03 #Javascript
多个vue子路由文件自动化合并的方法
Sep 03 #Javascript
Emberjs 通过 axios 下载文件的方法
Sep 03 #Javascript
vue 自动化路由实现代码
Sep 03 #Javascript
vue中npm包全局安装和局部安装过程
Sep 03 #Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
Sep 03 #jQuery
You might like
php 应用程序安全防范技术研究
2009/09/25 PHP
PHP学习笔记之三 数据库基本操作
2011/01/17 PHP
php绘制一条弧线的方法
2015/01/24 PHP
PHP内存使用情况如何获取
2015/10/10 PHP
PHP实现时间日期友好显示实现代码
2019/09/08 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
2014/01/23 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
AngularJS中的过滤器使用详解
2015/06/16 Javascript
jqTransform美化表单
2015/10/10 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
图片懒加载插件实例分享(含解析)
2017/01/09 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
基于jQuery Easyui实现登陆框界面
2017/07/10 jQuery
微信小程序获取手机系统信息的方法【附源码下载】
2017/12/07 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
Jquery让form表单异步提交代码实现
2019/11/14 jQuery
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
[00:20]DOTA2荣耀之路7:-ah fu-抢盾
2018/05/31 DOTA
Python闭包的两个注意事项(推荐)
2017/03/20 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
Python中print函数简单使用总结
2019/08/05 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
2020/04/08 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
英国领先的名牌服装折扣零售商:Brown Bag Clothing
2019/01/08 全球购物
保护环境建议书300字
2014/05/13 职场文书
计生专干事迹
2014/05/28 职场文书
中秋节晚会开场白
2015/05/29 职场文书
大学生读书笔记大全
2015/07/01 职场文书