学习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 插件 人性化的消息显示
Jan 21 Javascript
javascript校验价格合法性实例(必须输入2位小数)
May 05 Javascript
一个JavaScript操作元素定位元素的实例
Oct 29 Javascript
模拟javascript中的sort排序(简单实例)
Aug 17 Javascript
canvas 实现中国象棋
Feb 17 Javascript
详解Vue-基本标签和自定义控件
Mar 24 Javascript
谈谈VUE种methods watch和compute的区别和联系
Aug 01 Javascript
React组件refs的使用详解
Feb 09 Javascript
Vue项目中使用jquery的简单方法
May 16 jQuery
vue cli3.0 引入eslint 结合vscode使用
May 27 Javascript
Vue组件简易模拟实现购物车
Dec 21 Vue.js
Vue项目中如何封装axios(统一管理http请求)
May 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(6) 面向对象
2010/02/16 PHP
基于php在各种web服务器的运行模式详解
2013/06/03 PHP
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
通用JS事件写法实现代码
2009/01/07 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
js实现在同一窗口浏览图片
2014/09/17 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
解决前端跨域问题方案汇总
2016/11/20 Javascript
利用require.js与angular搭建spa应用的方法实例
2017/07/19 Javascript
详解Angular CLI + Electron 开发环境搭建
2017/07/20 Javascript
web前端vue之vuex单独一文件使用方式实例详解
2018/01/11 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
2019/12/19 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
详解javascript void(0)
2020/07/13 Javascript
python字典基本操作实例分析
2015/07/11 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
python利用微信公众号实现报警功能
2018/06/10 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
2018/12/24 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
python中if嵌套命令实例讲解
2021/02/25 Python
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
Java基础知识面试题
2014/03/25 面试题
业务经理岗位职责
2013/11/11 职场文书
简单英文演讲稿
2014/01/01 职场文书
小学新学期教师寄语
2014/01/18 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
党员批评与自我批评
2014/10/15 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
利用Python实现Picgo图床工具
2021/11/23 Python