微信小程序表单验证插件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 相关文章推荐
Jquey拖拽控件Draggable使用方法(asp.net环境)
Sep 28 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
Jun 13 Javascript
js实现下拉框选择要显示图片的方法
Feb 16 Javascript
JavaScript用select实现日期控件
Jul 17 Javascript
jquery验证邮箱格式是否正确实例讲解
Nov 16 Javascript
Javascript+CSS3实现进度条效果
Oct 28 Javascript
vue的事件绑定与方法详解
Aug 16 Javascript
jQuery事件对象的属性和方法详解
Sep 09 jQuery
浅谈Webpack 是如何加载模块的
May 24 Javascript
Vue2 监听属性改变watch的实例代码
Aug 27 Javascript
Vue实现兄弟组件间的联动效果
Jan 21 Javascript
JavaScript实现原型封装轮播图
Dec 27 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
消息持续发送的完整例子
2006/10/09 PHP
php 变量未定义等错误的解决方法
2011/01/12 PHP
利用php获取服务器时间的实现代码
2013/06/07 PHP
php利用header函数下载各种文件
2016/08/24 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
2017/05/05 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
javascript 硬盘序列号+其它硬件信息
2008/12/23 Javascript
JS获取整个页面文档的实现代码
2011/12/15 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
jQuery提交多个表单的小技巧
2014/07/27 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
2015/03/19 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
js表单登陆验证示例
2016/10/19 Javascript
微信小程序 删除项目工程实现步骤
2016/11/10 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
vue.js中指令Directives详解
2017/03/20 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
2019/10/23 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
2020/04/30 Javascript
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
CSS3中的@keyframes关键帧动画的选择器绑定
2016/06/13 HTML / CSS
销售会计岗位职责
2014/03/15 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
干部个人考察材料
2014/12/24 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技