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返回定位插件详解
May 15 jQuery
jQuery.Ajax()的data参数类型详解
Jul 23 jQuery
使用jQuery实现购物车结算功能
Aug 15 jQuery
jquery应用实例分享_实现手风琴特效
Feb 01 jQuery
jQuery实现遍历XML节点和属性的方法示例
Apr 29 jQuery
JS与jQuery判断文本框还剩多少字符可以输入的方法
Sep 01 jQuery
jQuery pjax 应用简单示例
Sep 20 jQuery
学习jQuery中的noConflict()用法
Sep 28 jQuery
Jquery和CSS实现选择框重置按钮功能
Nov 08 jQuery
jquery实现垂直无限轮播的方法分析
Jul 16 jQuery
jquery插件开发模式实例详解
Jul 20 jQuery
jQuery实现小火箭返回顶部特效
Feb 03 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
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
CI框架安全类Security.php源码分析
2014/11/04 PHP
php上传图片类及用法示例
2016/05/11 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
jquery获取input的value问题说明
2010/08/19 Javascript
JS常见问题整理(持续更新)
2013/08/06 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
Bootstrap按钮组实例详解
2017/07/03 Javascript
angular或者js怎么确定选中ul中的哪几个li
2017/08/16 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
Swiper自定义分页器使用详解
2017/12/28 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
Vue双向数据绑定(MVVM)的原理
2020/10/03 Javascript
Python序列化基础知识(json/pickle)
2017/10/19 Python
python使用fork实现守护进程的方法
2017/11/16 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
Python模拟简单电梯调度算法示例
2018/08/20 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
python文档字符串(函数使用说明)使用详解
2019/07/30 Python
python json.dumps() json.dump()的区别详解
2020/07/14 Python
Html5内唤醒百度、高德APP的实现示例
2019/05/20 HTML / CSS
html5将图片转换成base64的实例代码
2016/09/21 HTML / CSS
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
介绍一下Java的事务处理
2012/12/07 面试题
初级Java程序员面试题
2016/03/03 面试题
护士自我介绍信
2014/01/13 职场文书
初中班主任经验交流材料
2014/05/16 职场文书
信电学院毕业生自荐书
2014/05/24 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
导游词之晋城蟒河
2019/12/12 职场文书
详解redis在微服务领域的贡献
2021/10/16 Redis