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

 更新时间:2019年09月03日 15:26:39   作者:半路凉亭  
这篇文章主要介绍了微信小程序表单验证插件WxValidate的二次封装功能(终极版),文中给大家提到了最终版与前面2版的不同点,需要的朋友可以参考下

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

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

先讲讲最终版与前面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实现带播放列表的音乐播放器实例分享

    JavaScript实现带播放列表的音乐播放器实例分享

    这篇文章主要介绍了JavaScript实现带播放列表的音乐播放器实例分享,包括对播放完歌单之后没有将要播放的歌曲的提示功能,需要的朋友可以参考下
    2016-03-03
  • 在Js页面通过POST传递参数跳转到新页面详解

    在Js页面通过POST传递参数跳转到新页面详解

    这篇文章主要给大家介绍了关于在Js页面通过POST传递参数跳转到新页面的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-08-08
  • JS经典正则表达式笔试题汇总

    JS经典正则表达式笔试题汇总

    这篇文章主要介绍了JS经典正则表达式笔试题,结合实例形式汇总分析了javascript正则表达式的经典使用技巧,需要的朋友可以参考下
    2016-12-12
  • 浅谈JavaScript 代码简洁之道

    浅谈JavaScript 代码简洁之道

    这篇文章主要介绍了浅谈JavaScript 代码简洁之道,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • js对字符串和数字进行加法运算的一些情况

    js对字符串和数字进行加法运算的一些情况

    这篇文章主要介绍了js对字符串和数字进行加法运算的一些情况,需要的朋友可以参考下
    2023-02-02
  • 完美解决AJAX跨域问题

    完美解决AJAX跨域问题

    我看到过很多人不愿意去正视ajax所存在的技术瓶颈,其实AJAX更应该是Ajax而不是AJAX,突出第一个A是想强调其实AJAX发扬的是一种异步传输的方法,而不是具体到底使用了哪种技术
    2013-11-11
  • 详解wow.js中各种特效对应的类名

    详解wow.js中各种特效对应的类名

    本篇文章主要介绍了wow.js中各种特效对应的类名 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • JS实现方形抽奖效果

    JS实现方形抽奖效果

    这篇文章主要为大家详细介绍了JS实现方形抽奖效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • JavaScrpt的面向对象全面解析

    JavaScrpt的面向对象全面解析

    javascript面向对象知识很广泛,想深入理解需要花费一些时间,本文给大家介绍了js面向对象的创建及相关属性介绍,感兴趣的小伙伴一起学习吧
    2017-05-05
  • JS在数组头部添加元素的3种方法

    JS在数组头部添加元素的3种方法

    JS数组是一种特殊的对象,JS没有真正的数组,只是用对象模拟数组,下面这篇文章主要给大家介绍了关于JS在数组头部添加元素的3种方法,需要的朋友可以参考下
    2023-10-10

最新评论