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插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
Mar 21 jQuery
浅谈struts1 &amp; jquery form 文件异步上传
May 25 jQuery
jquery中有哪些api jQuery主要API
Nov 20 jQuery
jQuery实现碰到边缘反弹的动画效果
Feb 24 jQuery
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
Mar 28 jQuery
jQuery实现文件编码成base64并通过AJAX上传的方法
Apr 12 jQuery
jQuery实现的淡入淡出与滑入滑出效果示例
Apr 18 jQuery
jquery ajax加载数据前台渲染方式 不用for遍历的方法
Aug 09 jQuery
jQuery中常用动画效果函数知识点整理
Aug 19 jQuery
JQuery常见节点操作实例分析
May 15 jQuery
jquery实现垂直手风琴导航栏
Feb 18 jQuery
jQuery实现简单日历效果
Jul 05 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中数据库连接方式pdo和mysqli对比分析
2015/02/25 PHP
php fread读取文件注意事项
2016/09/24 PHP
Javascript 检测、添加、移除样式(className)函数代码
2009/09/08 Javascript
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
JavaScript中document.forms[0]与getElementByName区别
2015/01/21 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
JavaScript实现大图轮播效果
2017/01/11 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
深入理解Javascript中的观察者模式
2017/02/20 Javascript
浅谈关于.vue文件中style的scoped属性
2017/08/19 Javascript
ES6扩展运算符用法实例分析
2017/10/31 Javascript
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
Javascript实现动态时钟效果
2018/11/17 Javascript
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
Python实现获取命令行输出结果的方法
2017/06/10 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
python实现爬取百度图片的方法示例
2019/07/06 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
2019/07/14 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
DVF官方网站:美国时装界尊尚品牌
2017/08/29 全球购物
运动会入场解说词300字
2014/01/25 职场文书
GMP办公室主任岗位职责
2014/03/14 职场文书
合作协议书模板
2014/10/10 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
thinkphp 获取控制器及控制器方法
2021/04/16 PHP
微信小程序用户授权最佳实践指南
2021/05/08 Javascript
MySQL中的隐藏列的具体查看
2021/09/04 MySQL
nginx之queue的具体使用
2022/06/28 Servers
Redis Lua脚本实现ip限流示例
2022/07/15 Redis