前言

使用$.fn.validatebox.defaults重写默认值对象。下载该插件翻译源码

validatebox(验证框)的设计目的是为了验证输入的表单字段是否有效。如果用户输入了无效的值,它将会更改输入框的背景颜色,并且显示警告图标和提示信息。该验证框可以结合form(表单)插件并防止表单重复提交。

源码

/*** jQuery EasyUI 1.3.2* *翻译:qq 1364386878*/
(function ($) {//初始化函数function init(jq) {$(jq).addClass("validatebox-text");};//销毁方法function _destroy(jq) {var validatebox = $.data(jq, "validatebox");validatebox.validating = false;var tip = validatebox.tip;if (tip) {tip.remove();}$(jq).unbind();$(jq).remove();};//绑定事件function bindEvents(jq) {var box = $(jq);var validatebox = $.data(jq, "validatebox");//绑定聚焦事件box.unbind(".validatebox").bind("focus.validatebox", function () {validatebox.validating = true;validatebox.value = undefined;(function () {if (validatebox.validating) {if (validatebox.value != box.val()) {validatebox.value = box.val();if (validatebox.timer) {clearTimeout(validatebox.timer);}validatebox.timer = setTimeout(function () {$(jq).validatebox("validate");}, validatebox.options.delay);} else {validate(jq);}setTimeout(arguments.callee, 200);}})();//绑定光标离开事件}).bind("blur.validatebox", function () {if (validatebox.timer) {clearTimeout(validatebox.timer);validatebox.timer = undefined;}validatebox.validating = false;hideTip(jq);//绑定鼠标上去}).bind("mouseenter.validatebox", function () {if (box.hasClass("validatebox-invalid")) {showTip(jq);}//绑定鼠标离开事件}).bind("mouseleave.validatebox", function () {if (!validatebox.validating) {hideTip(jq);}});};//显示提示function showTip(jq) {var message = $.data(jq, "validatebox").message;var tip = $.data(jq, "validatebox").tip;if (!tip) {tip = $("<div class=\"validatebox-tip\">"+ "<span class=\"validatebox-tip-content\">"+ "</span>"+ "<span class=\"validatebox-tip-pointer\">"+ "</span>" + "</div>").appendTo("body");$.data(jq, "validatebox").tip = tip;}tip.find(".validatebox-tip-content").html(message);validate(jq);};//验证function validate(jq) {var validatebox = $.data(jq, "validatebox");if (!validatebox) {return;}var tip = validatebox.tip;if (tip) {var box = $(jq);var tippointer = tip.find(".validatebox-tip-pointer");var tipcontent = tip.find(".validatebox-tip-content");tip.show();tip.css("top", box.offset().top - (tipcontent._outerHeight() - box._outerHeight()) / 2);if (validatebox.options.tipPosition == "left") {tip.css("left", box.offset().left - tip._outerWidth());tip.addClass("validatebox-tip-left");} else {tip.css("left", box.offset().left + box._outerWidth());tip.removeClass("validatebox-tip-left");}tippointer.css("top", (tipcontent._outerHeight() - tippointer._outerHeight()) / 2);}};//隐藏提示function hideTip(jq) {var tip = $.data(jq, "validatebox").tip;if (tip) {tip.remove();$.data(jq, "validatebox").tip = null;}};//验证function _validate(jq) {var validatebox = $.data(jq, "validatebox");var options = validatebox.options;var tip = validatebox.tip;var box = $(jq);var val = box.val();function getmsg(msg) {validatebox.message = msg;};//验证类型function validTypeMd(validType) {var results = /([a-zA-Z_]+)(.*)/.exec(validType);var result = options.rules[results[1]];if (result && val) {var resultsVal = eval(results[2]);if (!result["validator"](val, resultsVal)) {box.addClass("validatebox-invalid");var msg = result["message"];if (resultsVal) {for (var i = 0; i < resultsVal.length; i++) {msg = msg.replace(new RegExp("\\{" + i + "\\}", "g"), resultsVal[i]);}}getmsg(options.invalidMessage || msg);if (validatebox.validating) {showTip(jq);}return false;}}return true;};if (options.required) {if (val == "") {box.addClass("validatebox-invalid");getmsg(options.missingMessage);if (validatebox.validating) {showTip(jq);}return false;}}if (options.validType) {if (typeof options.validType == "string") {if (!validTypeMd(options.validType)) {return false;}} else {for (var i = 0; i < options.validType.length; i++) {if (!validTypeMd(options.validType[i])) {return false;}}}}box.removeClass("validatebox-invalid");hideTip(jq);return true;};//实例化验证框$.fn.validatebox = function (target, parm) {if (typeof target == "string") {return $.fn.validatebox.methods[target](this, parm);}target = target || {};return this.each(function () {var validatebox = $.data(this, "validatebox");if (validatebox) {$.extend(validatebox.options, target);} else {init(this);$.data(this, "validatebox", {options: $.extend({},$.fn.validatebox.defaults,$.fn.validatebox.parseOptions(this), target)});}bindEvents(this);});};//默认方法$.fn.validatebox.methods = {//移除并销毁组件destroy: function (jq) {return jq.each(function () {_destroy(this);});},//验证文本框的内容是否有效validate: function (jq) {return jq.each(function () {_validate(this);});},//调用validate方法并且返回验证结果,true或者falseisValid: function (jq) {return _validate(jq[0]);}};//解析器$.fn.validatebox.parseOptions = function (target) {var t = $(target);return $.extend({}, $.parser.parseOptions(target,["validType","missingMessage","invalidMessage","tipPosition",{ delay: "number" }]),{ required: (t.attr("required") ? true : undefined) });};//默认属性和事件$.fn.validatebox.defaults = {required: false,//定义为必填字段//定义字段验证类型,比如:email, url等等。可用值有://1).一个有效类型字符串运用一个验证规则。//2).一个有效类型数组运用多个验证规则validType: null,delay: 200,//延迟到最后验证输入值missingMessage: "This field is required.",//当文本框未填写时出现的提示信息invalidMessage: null,//当文本框的内容被验证为无效时出现的提示//定义当文本框内容无效的时候提示消息显示的位置,有效的值有:'left','right'tipPosition: "right",//验证规则
        rules: {//匹配E-Mail的正则表达式规则
            email: {validator: function (value) {return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);},message: "Please enter a valid email address."},//匹配URL的正则表达式规则
            url: {validator: function (value) {return /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);},message: "Please enter a valid URL."},//length[0,100]:允许在x到x之间个字符
            length: {validator: function (startlength, endlength) {var len = $.trim(startlength).length;return len >= endlength[0] && len <= endlength[1];},message: "Please enter a value between {0} and {1}."},//remote['http://.../action.do','paramName']:发送ajax请求需要验证的值,当成功时返回true
            remote: {validator: function (_2a, url) {var data = {};data[url[1]] = _2a;var _2d = $.ajax({url: url[0],dataType: "json",data: data,async: false,cache: false,type: "post"}).responseText;return _2d == "true";},message: "Please fix this field."}}};
})(jQuery);

View Code

示例代码

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Basic ValidateBox - jQuery EasyUI Demo</title><link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css"><link rel="stylesheet" type="text/css" href="../../themes/icon.css"><link rel="stylesheet" type="text/css" href="../demo.css"><script type="text/javascript" src="../../jquery-1.8.0.min.js"></script><script src="../../plugins2/jquery.parser.js"></script><script src="../../plugins2/jquery.validatebox.js"></script>
</head>
<body><h2>Basic ValidateBox</h2><div class="demo-info"><div class="demo-tip icon-tip"></div><div>It's easy to add validate logic to a input box.</div></div><div style="margin:10px 0;"></div><div class="easyui-panel" title="Register" style="width:400px;padding:10px"><table><tr><td>User Name:</td><td><input class="easyui-validatebox" data-options="required:true,validType:'length[3,10]'"></td></tr><tr><td>Email:</td><td><input class="easyui-validatebox" data-options="required:true,validType:'email'"></td></tr><tr><td>Birthday:</td><td><input class="easyui-datebox"></td></tr><tr><td>URL:</td><td><input class="easyui-validatebox" data-options="required:true,validType:'url'"></td></tr><tr><td>Phone:</td><td><input class="easyui-validatebox" data-options="required:true"></td></tr></table></div></body>
</html>

View Code

插件效果

转载于:https://www.cnblogs.com/DemoLee/p/3501115.html

easyui源码翻译1.32--ValidateBox(验证框)相关推荐

  1. easyui源码翻译1.32--SearchBox(搜索框)

    前言 使用$.fn.searchbox.defaults重写默认值对象.下载该插件翻译源码 搜索框提示用户需要输入搜索的值.它可以结合一个菜单,允许用户选择不同的搜索类别.在用户按下回车键或点击组件右 ...

  2. easyui源码翻译1.32--Messager(消息窗口)

    前言 使用$.messager.defaults重写默认值对象.下载该插件翻译源码 消息窗口提供了不同的消息框风格,包含alert(警告框), confirm(确认框), prompt(提示框), p ...

  3. easyui源码翻译1.32--panel(面板)

    前言 昨天发布了表格datagrid的翻译源码 ,easyui的许多插件有依赖关系  比如datagrid 的渲染需要panel.resizable.linkbutton.pagination   今 ...

  4. easyui源码翻译1.32--Window(窗口)

    前言 扩展自$.fn.panel.defaults.使用$.fn.window.defaults重写默认值对象.下载该插件翻译源码 窗口控件是一个浮动和可拖拽的面板可以用作应用程序窗口.默认情况下,窗 ...

  5. easyui源码翻译1.32--Resizable(调整大小)

    前言 使用$.fn.resizable.defaults重写默认值对象 下载该插件翻译源码 源码 /*** jQuery EasyUI 1.3.2* *翻译:qq 1364386878 Resizab ...

  6. jQuery EasyUI API 中文文档 - ValidateBox验证框

    jQuery EasyUI API 中文文档 - ValidateBox验证框,使用jQuery EasyUI的朋友可以参考下. 用 $.fn.validatebox.defaults 重写了 def ...

  7. ArrayList源码翻译

    ArrayList源码翻译 简介 属性解读 初始化 添加方法 get方法 set方法 remove方法 contains方法 clone方法 总结 简介 ArrayList 是 java 集合框架中比 ...

  8. 【微信小程序控制硬件②】 开始微信小程序之旅,导入小程序Mqtt客户端源码,实现简单的验证和通讯于服务器.(附带源码)

    文章目录 一.前言: 二.注册微信小程序: 三.本博文连接和微信物联有何区别: 四.微信小程序`MQTT`客户端源码导入注意事项: 五.下载: 微信物联网生态主要分在微信硬件开发平台与腾讯物联开发平台 ...

  9. three.js源码翻译及案例(五)-GLTFLoader.js

    写在前面 Three中的加载脚本很多,但是核心思想是差不多的,就是文件用文件解析器加载,图片用图片解析器加载,然后json转换为对象,但是由于gltf格式可以自己编辑所以有的源码参考意义不大,glb及 ...

最新文章

  1. 微软亚洲研究院多媒体计算组招聘计算机视觉算法实习生
  2. SAP MM 关于采购组设计的思考
  3. Spring3.2.0-mybatis3.2.0 基于全注解搭建的后台框架-基础版
  4. 2. Nest:Controller
  5. 如何对聚类结果进行分析_产品经理如何进行数据分析?
  6. ESP32 GPIO入门之闪灯
  7. BZOJ5218[Lydsy2017省队十连测] 友好城市
  8. 最新 行政区划 省市区 历史版 2022 年
  9. 任志强:房价至少还要涨十多年 北京房价不会跌
  10. OSChina 周六乱弹 —— 正负能量交锋,谁是赢家?
  11. 用文华财经软件编写埃尔德动力系统
  12. 运用PS扭曲滤镜 将书法贴在人体上
  13. Unity获取物体自身坐标轴的方向以及沿着该方向运动的方法
  14. java 日期格式常量_Java 日期格式类
  15. matlab中 randperm()的用法
  16. minikube安装操作记录
  17. 计算机工程与设计 北大核心,计算机工程与设计 统计源期刊北大核心期刊
  18. 裤子尺寸参考与衣服尺寸参考
  19. 云原生架构总览,发展定义架构及趋势
  20. 修改hp服务器ilo密码工具,通过脚本方式修改ILO3的账号及密码-HPECommunity.PDF

热门文章

  1. android 4.4.2截屏方法,android4.4.2 使用 uiautoviewer 截屏报错
  2. mysql移动数据的语句是_mysql基本语句
  3. php背景图片随页面大小改变,css背景图根据屏幕大小自动缩放
  4. idle不是python自带的开发工具_Python的开发工具
  5. 边沿触发是什么意思_集基耦合双稳电路,集成化单稳电路,数字逻辑电路,门电路,触发器...
  6. MSTP多业务传输平台对设备接口的要求有哪些?
  7. RS485数据光端机产品特点及技术参数介绍
  8. 数据光端机设备性能指标介绍
  9. 浅谈模拟光端机和数字光端机的区别?
  10. [渝粤教育] 厦门大学 大数据技术原理与应用 参考 资料