学习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 相关文章推荐
初学Javascript的一些总结
Nov 03 Javascript
js 表单验证方法(实用)
Apr 28 Javascript
用JS实现3D球状标签云示例代码
Dec 01 Javascript
Jquery实现的一种常用高亮效果示例代码
Jan 28 Javascript
使用原生js写的一个简单slider
Apr 29 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
Apr 01 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
Dec 03 Javascript
json格式的javascript对象用法分析
Jul 04 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
Jan 24 Javascript
微信小程序搜索组件wxSearch实例详解
Jun 08 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
Jul 05 Javascript
JS实现获取自定义属性data值的方法示例
Dec 19 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
PHP 和 MySQL 基础教程(一)
2006/10/09 PHP
给初学PHP的5个入手程序
2006/11/23 PHP
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2011/12/05 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
ExtJS4 动态生成的grid导出为excel示例
2014/05/02 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
jQuery过滤选择器详解
2015/01/13 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
Django+Vue.js搭建前后端分离项目的示例
2017/08/07 Javascript
修改node.js默认的npm安装目录实例
2018/05/15 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
2018/10/23 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
2019/04/19 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
wxPython事件驱动实例详解
2014/09/28 Python
基于Python __dict__与dir()的区别详解
2017/10/30 Python
Python基于生成器迭代实现的八皇后问题示例
2018/05/23 Python
Python中is和==的区别详解
2018/11/15 Python
Python魔术方法专题
2020/06/19 Python
python使用re模块爬取豆瓣Top250电影
2020/10/20 Python
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
2012/11/25 面试题
人力资源专业推荐信
2013/11/29 职场文书
2014年师德承诺书
2014/05/23 职场文书
机关党员公开承诺书
2014/08/30 职场文书
学校领导班子对照检查材料
2014/09/24 职场文书
维稳工作承诺书
2015/01/20 职场文书
2016医师资格考试考生诚信考试承诺书
2016/03/25 职场文书
Python学习之os包使用教程详解
2022/03/21 Python
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers