在做web开发时,表单验证插件我们前端用的是jqueryValidate,由于个人主要精力是在后台JAVA开发上,为了让插件与后台更好的结合和使用,通过JAVA的自定义组件将表单全部重新写了一边,同时把jqueryValidate做了再次封装,新增了一些新的常用判断,也修改了一些关键字。

小程序同样也存在验证的问题,在网上搜索了一下,目前用的比较多的是WxValidate,下载地址和用法如下

github: https://github.com/skyvow/wx-extend

但是这个插件用起来比较麻烦,js要写很多的预设代码,所以本人又在此插件的基础上做了再次封装。

接下来直接说用法,以不为空(notEmpty)和长度(size)为例。

一、wxml文件

  1.  
    <form bindsubmit="formSubmit">
  2.  
    <view class="wide-info">
  3.  
    <view class="wide-info-list">
  4.  
    <!--姓名-->
  5.  
    <view class="info-list">
  6.  
    <view class="info-list-1eft">
  7.  
    <text class="notEmptyClass">姓名</text>
  8.  
    </view>
  9.  
    <view class="info-list-right">
  10.  
    <input id="name" name='name' placeholder='请输入' value='{{form.name}}' class="wxValidate inputName"
  11.  
    data-validate="notEmpty|size[4,10]" data-fieldname="姓名"/>
  12.  
    </view>
  13.  
    </view>
  14.  
     
  15.  
    <!--密码-->
  16.  
    <view class="info-list">
  17.  
    <view class="info-list-1eft dark">
  18.  
    <text class="notEmptyClass">密码</text>
  19.  
    </view>
  20.  
    <view class="info-list-right">
  21.  
    <input type="text" id="password" name="password" placeholder='请输入' value='{{form.age}}' class="wxValidate inputName"
  22.  
    data-fieldname="密码" data-validate="notEmpty"/>
  23.  
    </view>
  24.  
    </view>
  25.  
    <view class="info-list">
  26.  
    <view class="info-list-1eft dark">
  27.  
    <text class="notEmptyClass">重复密码</text>
  28.  
    </view>
  29.  
    <view class="info-list-right">
  30.  
    <input type="text" id="cfpassword" name="cfpassword" placeholder='请输入' value='{{form.age}}' class="wxValidate inputName"
  31.  
    data-fieldname="重复密码" data-validate="notEmpty|equals[password]"/>
  32.  
    </view>
  33.  
    </view>
  34.  
     
  35.  
    <!--年龄-->
  36.  
    <view class="info-list">
  37.  
    <view class="info-list-1eft dark">
  38.  
    <text class="notEmptyClass">年龄</text>
  39.  
    </view>
  40.  
    <view class="info-list-right">
  41.  
    <input type="text" id="age" name="age" placeholder='请输入' value='{{form.age}}' class="wxValidate inputName"
  42.  
    data-fieldname="年龄" data-validate="notEmpty|int|range[18,60]"/>
  43.  
    </view>
  44.  
    </view>
  45.  
     
  46.  
    </view>
  47.  
     
  48.  
    </view>
  49.  
    <!--按钮--->
  50.  
    <view class="buttons-kind">
  51.  
    <button class="fabu" form-type="submit">发布</button>
  52.  
    </view>
  53.  
    </form>

重点:每一个表单控件必须有3个属性和一个特定的样式关键字。

属性 说明
id 表单控件的ID
data-validate

需要做相关验证的关键字,多种验证用‘|’隔开,例如上面的姓名要验证不为空同时长度在4-10个字符:

data-validate="notEmpty|size[4,10]"

data-fieldname 当出现错误时,显示在错误提示中的表单名称。
样式 说明

wxValidate

代表此表单控件要做相关验证,必须写。

二.js文件

  1.  
    import WxValidate from '../../utils/WxValidate.js'
  2.  
    const util = require('../../utils/util.js')
  3.  
    Page({
  4.  
    /**
  5.  
    * 页面的初始数据
  6.  
    */
  7.  
    data: {
  8.  
    date:""
  9.  
    },
  10.  
     
  11.  
    /**
  12.  
    * 生命周期函数--监听页面加载
  13.  
    */
  14.  
    onLoad: function (options) {
  15.  
     
  16.  
    },
  17.  
    /**
  18.  
    * 生命周期函数--监听页面初次渲染完成
  19.  
    */
  20.  
    onReady: function () {
  21.  
    //验证方法
  22.  
    this.WxValidate = new WxValidate();
  23.  
    },
  24.  
    bindDateChange : function(e){
  25.  
    this.setData({date:e.detail.value})
  26.  
    },
  27.  
    /***调用验证函数***/
  28.  
    formSubmit: function (e) {
  29.  
    console.log('form发生了submit事件,携带的数据为:', e.detail.value)
  30.  
    const params = e.detail.value
  31.  
    e.detail.value.osscation_address = this.data.osscation_address
  32.  
    e.detail.value.date = this.data.date
  33.  
    console.log(e.detail.value)
  34.  
    console.log(this.WxValidate.rules)
  35.  
    console.log(this.WxValidate.messages)
  36.  
    //校验表单
  37.  
    if (!this.WxValidate.checkForm(params)) {
  38.  
    const error = this.WxValidate.errorList[0]
  39.  
    util.alert("错误提示",error.msg)
  40.  
    return false
  41.  
    }
  42.  
    //向后台发送时数据 wx.request...
  43.  
    util.alert("成功提示", '提交成功 :' + e.detail.value.date)
  44.  
    }
  45.  
     
  46.  
    })

重点: 此页面只要在渲染完的方法里new WxValidate();然后在提交的操作里加上判断即可。例如下图的效果。

三、验证关键字

关键字 说明 用法
notEmpty 不能为空  

size[4,10]

输入字符的长度

可以只写一个数字,注意根据判断的不同,判断要不要写“,”。例如

长度最小为4则可写成:size[4];

长度最大为10则可写成:size[,10],注意逗号不能少;

int

整数  

number

数字  

range[18,60]

数值的范围

类似与size,但此关键字还多一种判断,例如是不包含首尾的数值,例如

薪酬必须大于5000 小于等于20000: range(5000,20000];

或者年龄必须18-60之间,但不包含18岁和60岁:range(18,60)

equals[id]

等于另一个表单的值

id:表示另一个控件的id,此处也可以写成:

equals[id,另一个控件的名称]格式,例如:equals[id,手机号]

“输入值必须和【手机号】相同!”;若后面的名称不填写,则验证出错时默认提示的是“请输入与上面相同的密码”

tel

电话格式(中国大陆)  
phone 手机格式(中国大陆)  

idcard

身份证(中国大陆)  

date

日期  

dateISO

日期(ISO),例如:2009-06-23,1998/01/22  
email 邮箱地址  
url 网站地址  

PS:这个控件最终应该还是要和wx.request 封装到一起使用,具体等我把wx.request封装好了再写了。

插件下载:https://github.com/zhuiyue82/wx

本人在CSDN的本文链接:https://blog.csdn.net/zhuiyue82/article/details/100012973

微信小程序——仿jqueryValidate表单验证插件WxValidate的二次封装(一)的更多相关文章

  1. 微信小程序——表单验证插件WxValidate的二次封装(二)

    在上一篇博客<微信小程序——仿jqueryValidate表单验证插件WxValidate的二次封装>中,我将WxValidate做了再次封装,简化了初始规则数据的构造,但是当有错误时页面 ...

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

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

  3. 微信小程序 - 表单验证插件WxValidate使用

    插件下载地址及官方文档:https://github.com/skyvow/wx-extend 具体的WxValidate.js文件的位置在wx-extend/src/assets/plugins/w ...

  4. 微信小程序 - 表单验证插件WxValidate(自定义警告信息形式)

    弹出的形式对于用户来说,总是不太友好的 可能会出现层级问题(只需要设置一下提示的层级即可) WxValidate内置规则 以下代码拷贝即可使用~ wxml <form bindsubmit='s ...

  5. 微信小程序实战:表单与选择控件的结合

    先上代码. login.wxml <mp-toptips msg="{{error}}" type="error" show="{{error} ...

  6. JqueryValidate 表单验证插件

    1.适用场景 表单 ( 支持自定义规则 ) 2.相关文章 jQuery Validate 3.实际问题 JqueryValidate表单相同Name不校验问题解决

  7. 微信小程序基础之表单Form的使用

    表单Form的应用很广泛,我们可以利用form设计登录注册,也可以设计一种答题问卷的形式,今天主要讲一下form的使用 form表单,将组件内输入的"switch","i ...

  8. 微信小程序--获取form表单初始值提交数据

    <form bindsubmit="formSubmit"> <view class="txt"> <view class=&qu ...

  9. 微信小程序仿朋友圈功能开发(发布、点赞、评论等功能)

    微信小程序仿朋友圈功能开发(发布.点赞.评论等功能) 1.项目分析 项目整体分为三个部分 发布 展示 详情页 graph LR 朋友圈发布 --内容发布--> 内容展示 内容展示 --点击展示卡 ...

随机推荐

  1. leaflet-webpack 入门开发系列六矢量瓦片(附源码下载)

    前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...

  2. 更改Android设备System目录的文件的写入权限

    有时候我们需要修改/system目录中文件的权限,比如将该目录下的脚本设置写入权限等,但该目录默认只有read权限,此时应该怎么办? 1.安卓设备请确保root;2.连接安卓设备,确保安卓设备打开了“ ...

  3. Android 上下文菜单 ContextMenu

    public class MainActivity extends Activity { private ListView listView; @Override protected void onC ...

  4. sql server重建全库索引和更新全库统计信息通用脚本

    重建全库索引: exec sp_msforeachtable 'DBCC DBREINDEX(''?'')' 更新全库统计信息: --更新全部统计信息 exec sp_updatestats 实例反馈 ...

  5. Python中删除空白字符

    主要参考 Stackoverflow答案总结. 空白字符一般指以下几种字符: space,tab, linefeed, return, formfeed, and vertical tab中英文对照表 ...

  6. Spring 关于ResponseBody注解的作用

    //responseBody一般是作用在方法上的,加上该注解表示该方法的返回结果直接写到Http response Body中,常用在ajax异步请求中, //在RequestMapping中 ret ...

  7. 为什么delete后磁盘空间没有释放而truncate会释放?

    背景 因项目需求,需要清理一批旧数据,腾出空间给新数据,让同事负责这件事.料想会很顺利,但很快找到我,并告知在postgresql中把一张大的数据表删除掉了,查询表的size并没有改变. 我震惊了,问 ...

  8. .net core 3.0web_razor page项目_使用中间件接受大文件上传报错_httpRequest.Form threw an exception of type Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException_Request body too large

    前言:在web项目的.net framework时文件上传时,自己常用一般处理程序接受上传文件,上传文件的大小限制是可以项目的webconfig里配置.   到core项目使用一般处理程序变成了中间件 ...

  9. Pumpkin Raising Walk Through

    概述: 这个靶机的规则是根据提示获取南瓜的seed,然后根据一次获取的seed 登录服务器并完成提权,里面涉及到一些CTF的知识,加密解密,提权! 主机端口扫描: ╰─ nmap -p1-65535 ...

  10. Oracle 定时备份数据库

    [操作说明] 在前面的博客中,学习了如何Oracle如何备份数据库,实际开发过程中数据库应该每隔一段时间就要备份一次,所以我们就需要一个定时执行这个代码的功能,同时备份的文件可能进行一些处理,比如压缩 ...