学习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 相关文章推荐
jquery 操作单选框,复选框,下拉列表实现代码
Oct 27 Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
May 15 Javascript
jquery.validate使用详解
Jun 02 Javascript
AngularJS 单元测试(二)详解
Sep 21 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
Dec 24 Javascript
Bootstrap输入框组件简单实现代码
Mar 06 Javascript
单击按钮发送验证码,出现倒计时的简单实例
Mar 17 Javascript
JS数组交集、并集、差集的示例代码
Aug 23 Javascript
在小程序开发中使用npm的方法
Oct 17 Javascript
JS中的函数与对象的创建方式
May 12 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
Nov 12 Javascript
JavaScript实现京东放大镜效果
Dec 03 Javascript
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
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
php 中文字符串首字母的获取函数分享
2013/11/04 PHP
php下Memcached入门实例解析
2015/01/05 PHP
Laravel最佳分割路由文件(routes.php)的方式
2016/08/04 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
PHP abstract与interface之间的区别
2013/11/11 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
JavaScript实现微信号随机切换代码
2018/03/09 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
JS中验证整数和小数的正则表达式
2018/10/08 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
详解vue中多个有顺序要求的异步操作处理
2019/10/29 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
Element Dialog对话框的使用示例
2020/07/26 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
python中的lambda表达式用法详解
2016/06/22 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
使用Pytorch来拟合函数方式
2020/01/14 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
2020/06/11 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
2020/09/11 Python
Pycharm自带Git实现版本管理的方法步骤
2020/09/18 Python
python中reload重载实例用法
2020/12/15 Python
这段代码难道不该打印出56吗
2013/02/27 面试题
优秀教师的感人事迹
2014/02/04 职场文书
音乐教师求职信
2014/06/28 职场文书
反对邪教标语
2014/06/30 职场文书
转变工作作风心得体会
2016/01/23 职场文书