学习LayUI时自研的表单参数校验框架案例分析


Posted in Javascript onJuly 29, 2019

开发背景&痛点 :

每次写前端的表单的时候需要对表单里用户填写的内容进行校验,减少服务器压力,提前对已知错误对用户提示。每次会要写很多的if else等等对输入框中的内容进行判断,并对为空、格式不正确等情况作出对应提示。

需要写大量重复的if else语句,实在太麻烦,所以自己写了这个框架用于前端参数的校验。

本框架基于LayUI框架

对于三种开发者情况:

1、完全不会LayUI也没有任何关系 在html头部中添加如下代码就OK了

<script src="https://www.layuicdn.com/layui/layui.js"></script>
<link rel="stylesheet" href="https://www.layuicdn.com/layui/css/layui.css">
<script>
  var layer=layui.layer;
  var form=layui.form;
  layui.use(['layer','form'],function () {})
</script>

2、使用了LayUI框架进行开发则无需做改变

3、使用了其他前端UI框架将源码中下面语句转换成你的UI框架的提示框即可。

layer.tips(tipname+'不合法('+tiplegal+')',chooser,{
        tips: [2, '#FF0000']
      })

使用本参数校验框架需要引入一个js文件(可以下载到本地使用)

在Html头部插入如下代码引入JS

<script src="https://mywarehouse.oss-cn-shenzhen.aliyuncs.com/ParaCheck.js"></script>

使用案例

HTML:

学习LayUI时自研的表单参数校验框架案例分析

本注册页面对应JS文件

学习LayUI时自研的表单参数校验框架案例分析

使用效果

直接点击注册

学习LayUI时自研的表单参数校验框架案例分析

输入1后点击注册

学习LayUI时自研的表单参数校验框架案例分析

API:

核心接口:

1:paraCheck(chooser,name,regex,legal)//单个输入框检查函数,传入的三个参数为,选择器(#id或者.class)、输入框名称(中文意义,比如手机号码)、正则匹配式(比如验证码输入框对应的正则表达式为/^[0-9]{6}$/)

2:multiParaCheck(choosers,names,regexs,legals)//批量校验函数

返回值:

1:true  全部通过校验

2:false 出现未通过校验的输入框,实时进行如上图对用户进行提示

备注:第一个参数必填,第二、三、四个参数选填,建议都传入,用户体验感好,如果您不想麻烦,只检测是否是空的,那只需要传入第一个参数。

图中注册界面脚本代码:

(注册按钮onclick="register()")

function register() {
  var choosers=['#phone','#content','#password','#name','#stuId','#gender','#grade','#major','#classNumber'];
  var names=['手机号码','短信验证码','密码','姓名','学号','性别','年级','专业','班级'];
  var regexs=[/^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\d{8}$/,/^[0-9]{6}$/,/^[0-9a-zA-Z]{8-20}$/,/^[\u4e00-\u9fa5]{2,5}$/,/^2[0-9]{11}$/,/^[男女]$/,/^20[0-9]{2}$/,/^[\u4e00-\u9fa5]{2,10}$/,/^[0-9]{1,2}$/];
  var legals=['11位数字','6位数字','8-20位数字、字母','2-5位中文','12位数字','男|女','4位数字','2-10位中文','1-2位数字'];
  if(multiParaCheck(choosers,names,regexs,legals))
  {
    if ($('#password').val()!=$('#repeatPassword').val())
    {
      layer.tips('两次密码输入不一致','#repeatPassword',{
        tips: [2, '#FF0000']
      });
      return;
    }
    var formData=new FormData();
    for(var i=0;i<choosers.length;i++)
      formData.append(choosers[i].replace('#',''),$(choosers[i]).val());
    $.ajax({
      type: "get",
      url: "/fpa/member/login",
      xhrFields: {withCredentials: true},
      data: formData,
      dataType: "text",
      success: function (data) {
        layer.alert(data);
        if (data.indexOf('成功') > -1)
          window.href.open('/login.html');
      }
    });
  }
}

总结

以上所述是小编给大家介绍的学习LayUI时自研的表单参数校验框架案例分析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
iframe 自适应高度[在IE6 IE7 FF下测试通过]
Apr 13 Javascript
innerText和innerHTML 一些问题分析
May 18 Javascript
理解JavaScript表单的基础知识
Jan 25 Javascript
在JavaScript中模拟类(class)及类的继承关系
May 20 Javascript
javaScript给元素添加多个class的简单实现
Jul 20 Javascript
浅谈JQ中mouseover和mouseenter的区别
Sep 13 Javascript
jquery实现的table排序功能示例
Mar 10 Javascript
微信小程序实现运动步数排行功能(可删除)
Jul 05 Javascript
JS数组求和的常用方法总结【5种方法】
Jan 14 Javascript
vue移动端的左右滑动事件详解
Jun 17 Javascript
Ant Design的可编辑Tree的实现操作
Oct 31 Javascript
vue3.0+vue-router+element-plus初实践
Dec 02 Vue.js
jquery.pager.js分页实现详解
Jul 29 #jQuery
javascript面向对象创建对象的方式小结
Jul 29 #Javascript
jquery.pager.js实现分页效果
Jul 29 #jQuery
vue-router跳转时打开新页面的两种方法
Jul 29 #Javascript
JS实现移动端点击按钮复制文本内容
Jul 28 #Javascript
微信小程序文字显示换行问题
Jul 28 #Javascript
vue router 跳转时打开新页面的示例方法
Jul 28 #Javascript
You might like
php数组转换js数组操作及json_encode的用法详解
2013/10/26 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
jquery方法+js一般方法+js面向对象方法实现拖拽效果
2012/08/30 Javascript
javascript标签在页面中的位置探讨
2013/04/11 Javascript
查找iframe里元素的方法可传参
2013/09/11 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
深入理解JavaScript内置函数
2016/06/03 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
2018/02/09 Javascript
element-ui表格数据转换的示例代码
2018/08/24 Javascript
vue进入页面时滚动条始终在底部代码实例
2019/03/26 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
2015/04/25 Python
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
在Python的Flask中使用WTForms表单框架的基础教程
2016/06/07 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
Django ImageFiled上传照片并显示的方法
2019/07/28 Python
Django框架表单操作实例分析
2019/11/04 Python
HTML5 Canvas 实现K线图的示例代码
2019/12/23 HTML / CSS
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
学生会主席竞聘书
2014/03/31 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书
清洁员岗位职责
2015/02/15 职场文书
工作岗位职责范本
2015/02/15 职场文书
Python OpenCV快速入门教程
2021/04/17 Python
教你如何用cmd快速登录服务器
2022/06/10 Servers