微信小程序表单验证插件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 相关文章推荐
动态刷新 dorado树的js代码
Jun 12 Javascript
精心挑选的15款优秀jQuery 本特效插件和教程
Aug 06 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
Feb 05 Javascript
jQuery中on()方法用法实例
Jan 19 Javascript
javascript转换日期字符串为Date日期对象的方法
Feb 13 Javascript
jQuery 全选 全部选 反选 实现代码
Aug 17 Javascript
JS实现中国公民身份证号码有效性验证
Feb 20 Javascript
JavaScript中最常见的三个面试题解析
Mar 04 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
Sep 19 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
Mar 31 Javascript
javascript canvas时钟模拟器
Jul 13 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
Nov 16 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
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
用PHP中的 == 运算符进行字符串比较
2006/11/26 PHP
php实现telnet功能示例
2014/04/08 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
jquery validate使用攻略 第四步
2010/07/01 Javascript
小试JQuery的AutoComplete插件
2011/05/04 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
2014/04/04 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
微信小程序修改数组长度的问题的解决
2019/12/17 Javascript
用vue 实现手机触屏滑动功能
2020/05/28 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
python使用mailbox打印电子邮件的方法
2015/04/30 Python
python使用PyGame模块播放声音的方法
2015/05/20 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
2019/05/18 Python
python opencv实现证件照换底功能
2019/08/19 Python
Vs Code中8个好用的python 扩展插件
2020/10/12 Python
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
德国大型和小型家用电器网上商店:Energeto
2019/05/15 全球购物
印度尼西亚最完整和最大的在线药房网站:Farmaku.com
2019/11/23 全球购物
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
小学校长汇报材料
2014/08/20 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
旷工检讨书1000字
2015/01/01 职场文书
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis