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.load()和Jsp的include的区别
Apr 12 jQuery
jquery实现异步加载图片(懒加载图片一种方式)
Apr 24 jQuery
使用jQuery.Pin垂直滚动时固定导航
May 24 jQuery
jQuery条件分页 代替离线查询(附代码)
Aug 17 jQuery
jquery+css实现下拉列表功能
Sep 03 jQuery
jQuery实现的form转json经典示例
Oct 10 jQuery
jQuery实现判断上传图片类型和大小的方法示例
Apr 11 jQuery
jquery获取img的src值实例介绍
Jan 16 jQuery
JQuery获取元素尺寸、位置及页面滚动事件应用示例
May 14 jQuery
jQuery中DOM操作原则实例分析
Aug 01 jQuery
jquery添加div实现消息聊天框
Feb 08 jQuery
jQuery-App输入框实现实时搜索
Nov 19 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
mysql+php分页类(已测)
2008/03/31 PHP
php实现在线生成条形码示例分享(条形码生成器)
2013/12/30 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
JS命名空间的另一种实现
2013/08/09 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
Javascript使用function创建类的两种方法(推荐)
2016/11/19 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
p5.js 毕达哥拉斯树的实现代码
2018/03/23 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
怎样在vue项目下添加ESLint的方法
2019/05/16 Javascript
javascript异步编程的六种方式总结
2019/05/17 Javascript
javascript实现随机抽奖功能
2020/12/30 Javascript
[04:42]2015国际邀请赛CDEC战队晋级之路
2015/08/13 DOTA
Python开发常用的一些开源Package分享
2015/02/14 Python
详解python多线程、锁、event事件机制的简单使用
2018/04/27 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
python无序链表删除重复项的方法
2020/01/17 Python
Tensorflow 实现释放内存
2020/02/03 Python
Python双链表原理与实现方法详解
2020/02/22 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
机关门卫岗位职责
2013/12/30 职场文书
余世维讲座观后感
2015/06/11 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技