微信小程序——表单验证插件WxValidate的二次封装(终极版)
微信小程序表单验证前面的两篇文章做的效果总感觉都有点不太友好,第一篇里的效果是将错误信息通过对话框形式弹出来,这种形式在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.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的二次封装(终极版)的更多相关文章
- 微信小程序——表单验证插件WxValidate的二次封装(二)
在上一篇博客<微信小程序——仿jqueryValidate表单验证插件WxValidate的二次封装>中,我将WxValidate做了再次封装,简化了初始规则数据的构造,但是当有错误时页面 ...
- 微信小程序 - 表单验证插件WxValidate使用
插件下载地址及官方文档:https://github.com/skyvow/wx-extend 具体的WxValidate.js文件的位置在wx-extend/src/assets/plugins/w ...
- 微信小程序 - 表单验证插件WxValidate(自定义警告信息形式)
弹出的形式对于用户来说,总是不太友好的 可能会出现层级问题(只需要设置一下提示的层级即可) WxValidate内置规则 以下代码拷贝即可使用~ wxml <form bindsubmit='s ...
- 微信小程序——仿jqueryValidate表单验证插件WxValidate的二次封装(一)
在做web开发时,表单验证插件我们前端用的是jqueryValidate,由于个人主要精力是在后台JAVA开发上,为了让插件与后台更好的结合和使用,通过JAVA的自定义组件将表单全部重新写了一边,同时 ...
- 微信小程序-表单
wxml <view> 按钮: <button size="{{buttom.size}}" type="{{buttom.type}}" p ...
- 微信小程序-表单组件
button 按钮 注:button-hover 默认为{background-color: rgba(0, 0, 0, 0.1); opacity: 0.7;} 示例代码: /** wxss **/ ...
- 微信小程序-表单笔记
发布页——向云端数据库上传多行文字和4张图片 第6,8行注释掉和不注释掉都可以实现数据上传 var _this = this; wx.cloud.callFunction({ name: 'searc ...
- 微信小程序 --- 表单输入验证(手机号、邮箱验证、输入非空)
js代码 Page({ /** * 页面的初始数据 */ data: { indicatorDots: false, ...
- 微信小程序-表单笔记2
本地添加4张图片并显示至页面——组件位置.设置样式.列表渲染 Q.button是一张图片,需要实现点击这张图片后选择本地图片后显示至页面,不知道怎么让本地图片将button挤到右边 S.在wxml中 ...
随机推荐
- Django中直接执行SQL语句
欢迎加入python学习交流群 667279387 今天在django views.py看到同事写的代码里面有段关于数据库查询的语句.因为涉及多个表的查询,所以django 的models的查询无法满 ...
- nitacm20317 来自张司机的挑战书
题目:让你求从x到y中(1<=x<=y<=10^18),二进制一的个数最多的数是哪个,如果有多个相同的答案,输出最小的. 题目链接:https://www.nitacm.com/pr ...
- 【Web技术】314- 前端组件设计原则
点击上方"前端自习课"关注,学习起来~ 译者:@没有好名字了译文:https://github.com/lightningminers/article/issues/36,http ...
- Dubbo源码分析之SPI(二)
一.概述 本篇文章是dubbo SPI源码分析的第二篇,接着第一篇继续分析dubbo SPI的内容,我们主要介绍 getDefaultExtension() 获取默认扩展点方法. 由于此方法比较简单, ...
- ES6,箭头函数 (=>)注意点
函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象. 不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误. 不可以使用arguments对象,该对象在函数体内不存 ...
- 8月份21道最新Java面试题剖析(数据库+JVM+微服务+高并发)
前言 纵观几年来的Java面试题,你会发现每家都差不多.你仔细观察就会发现,HashMap的出现几率未免也太高了吧!连考察的知识点都一样,什么hash碰撞啊,并发问题啊!再比如JVM,无外乎考内存结构 ...
- Js 与浮点数
同步发表在我的博客:jmingzi 当你学习一个知识点没有方向时,可以尝试以解决问题的角度来理解它. 例如这个知识点我们可以从以下问题开始: 你看的到 1 真的是整数 1 吗? 为什么0.1 + 0. ...
- tinymce插件preview改造增加全屏按钮
近期需要用到tinymce的preview插件,但preview出来的界面太小了,通过投影仪出来看的不清晰,于是想在preview的预览界面中增加全屏.放大和缩小的按钮,改造内容如下: 由于previ ...
- 【玩转SpringBoot】看似复杂的Environment其实很简单
喜欢写代码,讨厌配环境 我相信这十个字的小标题代表了大多数码农的心声. 十年前读大学时,学校开设了C语言还有C++.但是学习这两种语言,对于新手来说非常没有成就感. 于是我就在校门口买个光盘,装个VS ...
- 用正则表达式【regexp】进行高级搜索数据
正则表达式介绍 正则表达式是用来匹配文本的特殊字符集合,如果你想从一个文本中提取电话号码而已使用正则表达式,如果你需要查找名字中包含数字的所有文件可以使用正则,如果你你要在文本块中找到所有重复的单词, ...