jQuery轻量级表单模型验证插件


Posted in jQuery onOctober 15, 2018

JQuery插件,轻量级表单模型验证,供大家参考,具体内容如下

附上源码和Demo段

var validataForm = (function(model) {
  model.Key = "[data-required='true']";
  model.ElementList = new Array();
  model.FunctionDictionary = new Dictionary();
  model.ToastrCustom = function (msg) {
    alert(msg);
  }

  model.AddElement = function (name) {
    model.ElementList.push(name);
  };

  model.AddFunction = function (name, func) {
    model.FunctionDictionary.add(name, func);
  };

  model.Validata = function (formName) {
    for (var i = 0; i < model.ElementList.length; i++) {
      var thisObj = model.ElementList[i];
      var str = formName + " " + thisObj + model.Key;
      var elements = $(str);

      for (var j = 0; j < elements.length; j++) {
        var element = elements.eq(j);
        var value = element.val();

        var elementType = element.data().type;

        var func = model.FunctionDictionary.find(elementType);
        if (func) {
          var result = func(value, element);

          if (result.status) {
            var errorInfo = result.message;
            model.ToastrCustom(errorInfo);
            return;
          }
        }
      }
    }
  };

  model.ElementList.push("input");
  model.ElementList.push("select");
  model.FunctionDictionary.add("required", function (value, element) {
    var name = element.data().name;

    return {
      status: (value === ""),
      message: (value === "" && name + "不能为空")
    };
  });

  return model;
})(window.validataForm || {});

调用处

<form id="ValidataForm">
  <input data-required="true" data-name="名称" data-type="required" value="">
  <input data-required="true" data-name="昵称" data-type="hello">
  <button id="Send">提交</button>
</form>
<script src="~/js/plugs/jquery-3.3.1.js"></script>
<script src="~/js/Dictionary.js"></script>
<script src="~/js/ValidataForm.js"></script>
<script type="text/javascript">
  $("#Send").click(function () {
    validataForm.Validata("#ValidataForm");
  });
</script>

Dictionary这个对象是抄一个博主的
代码附上,内置链接

/* https://www.cnblogs.com/baiyangyuanzi/p/6689554.html */
/*字典 Dictionary类*/
function Dictionary() {
  this.add = add;
  this.datastore = new Array();
  this.find = find;
  this.remove = remove;
  this.count = count;
  this.clear = clear;
}

function add(key, value) {
  this.datastore[key] = value;
}

function find(key) {
  return this.datastore[key];
}

function remove(key) {
  delete this.datastore[key];
}

function count() {
  /*var ss = Object.keys(this.datastore).length;
  console.log("ssss  "+ss);
  return Object.keys(this.datastore).length;*/
  /**/
  var n = 0;
  for (var key in Object.keys(this.datastore)) {
    ++n;
  }
  return n;
}

function clear() {
  for (var key in this.datastore) {
    delete this.datastore[key];
  }
}

萌新初试前端,有写得不好的地方,望各位前辈,多多指教。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
Mar 21 jQuery
jQuery编写textarea输入字数限制代码
Mar 23 jQuery
jQuery开源组件BootstrapValidator使用详解
Jun 29 jQuery
jQuery remove()过滤被删除的元素(推荐)
Jul 18 jQuery
jQuery Ajax 实现分页 kkpager插件实例代码
Aug 10 jQuery
JS和jQuery通过this获取html标签中的属性值(实例代码)
Sep 11 jQuery
基于jQuery Ajax实现下拉框无刷新联动
Dec 06 jQuery
解决Jquery下拉框数据动态获取的问题
Jan 25 jQuery
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
Apr 12 jQuery
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
Feb 14 jQuery
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
May 12 jQuery
jQuery开发仿QQ版音乐播放器
Jul 10 jQuery
jquery实现联想词搜索框和搜索结果分页的示例
Oct 10 #jQuery
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
Oct 10 #jQuery
jquery.param()实现数组或对象的序列化方法
Oct 08 #jQuery
jQuery实现点击图标div循环放大缩小功能
Sep 30 #jQuery
学习jQuery中的noConflict()用法
Sep 28 #jQuery
jQuery序列化form表单数据为JSON对象的实现方法
Sep 20 #jQuery
jQuery pjax 应用简单示例
Sep 20 #jQuery
You might like
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
初识php MVC
2014/09/10 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
2015/01/04 PHP
PHP输出两个数字中间有多少个回文数的方法
2015/03/23 PHP
php判断访问IP的方法
2015/06/19 PHP
PHP register_shutdown_function()函数的使用示例
2015/06/23 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
setTimeout和setInterval的浏览器兼容性分析
2007/02/27 Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
2014/11/10 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
javascript实现图片轮播代码
2019/07/09 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
vue2.0 解决抽取公用js的问题
2020/07/31 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
Windows系统配置python脚本开机启动的3种方法分享
2015/03/10 Python
Python日期时间Time模块实例详解
2019/04/15 Python
Python可以实现栈的结构吗
2020/05/27 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
CSS3 文字动画效果
2020/11/12 HTML / CSS
HTML5中的nav标签学习笔记
2016/06/24 HTML / CSS
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
AmazeUI 折叠面板的实现代码
2020/08/17 HTML / CSS
毕业实习个人鉴定范文
2013/12/10 职场文书
大学运动会入场词
2014/02/22 职场文书
公司活动方案范文
2014/03/06 职场文书
大学生见习期满自我鉴定
2014/09/13 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
学生检讨书怎么写
2015/05/07 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
合作协议书格式范本
2016/03/21 职场文书
2016年小学中秋节活动总结
2016/04/05 职场文书
golang中的空接口使用详解
2021/03/30 Python
用python自动生成日历
2021/04/24 Python