easyui源码翻译1.32--ValidateBox(验证框)

前言

使用$.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java静态方法获取对象_JavaPowerMockito模拟单个静态方法和返回对象

小编典典你想要做的是1的一部分和2的全部的组合。你需要使用PowerMockito.mockStatic为类的所有静态方法启用静态模拟。这意味着可以使用when-thenReturn语法对它们进行存根。但是&#xff0c;当你调用尚未在模拟实例上显式存根的方法时&#xff0c;你正在使用的2个参数的mathS…

从战中反弹:将Git提交信息作为JSON返回

在某些情况下&#xff0c;我们必须知道部署到远程服务器的Web应用程序的确切版本。 例如&#xff0c;客户可能想知道我们是否已经在服务器X上部署了错误修复程序。 当然&#xff0c;我们可以尝试使用“传统”方法找到该问题的答案。 问题是&#xff1a; 没有人不记得是谁更新…

在论坛中出现的各种疑难问题:日志收缩问题

最近&#xff0c;在论坛中&#xff0c;遇到了不少疑难的问题&#xff0c;在此特别记录&#xff0c;同时也感谢发帖人的分享、以及其他网友的热心回答。 1、日志暴大&#xff0c;无法收缩&#xff0c;谁来挑战一下&#xff01; http://bbs.csdn.net/topics/390674731?page1#pos…

学java前要学css_教你一招:学习Java必须学会的CSS用法

一&#xff1a;CSS概述什么是CSSCSS就是层叠样式表(Casading Style Sheets)&#xff0c;通常称为CSS样式表&#xff0c;或者是级联样式表。主要用于设置HTML中的文本&#xff0c;内容(字体&#xff0c;大小&#xff0c;对齐)&#xff0c;图片外形(宽高&#xff0c;边框样式&…

标准I/O库之缓冲

标准I/O库提供缓冲的目的是尽可能减少使用read和write调用的次数。它也对每个I/O流自动地进行缓冲管理&#xff0c;从而避免了应用程序需要考虑这一点所带来的麻烦。 标准I/O提供了三种类型的缓冲&#xff1a; &#xff08;1&#xff09;全缓冲。这种情况下&#xff0c;在填满标…

java如何写安卓接口文档_android、java制作sdk以及自动生成文档

最近一直在做android开发&#xff0c;昨天经理让我写个接口SDK做个接口文档&#xff0c;以便后面的开发。这让我很焦灼&#xff0c;SDK怎么做&#xff1f;要是只有敲代码还好。可是那个接口文档&#xff01;&#xff01;&#xff01;文档这东西最讨厌了&#xff0c;头都大了后来…

[转载]jquery cookie的用法

原文地址:http://www.cnblogs.com/qiantuwuliang/archive/2009/07/19/1526663.html jQuery cookie是个很好的cookie插件&#xff0c;大概的使用方法如下 example $.cookie(’name’, ‘value’); 设置cookie的值&#xff0c;把name变量的值设为value example $.cookie(’name’…

21世纪的设计模式:抽象工厂模式

这是我的演讲的第二部分&#xff0c;“ 21世纪的设计模式” 。 此模式在Java代码中到处都有使用&#xff0c;尤其是在更多“企业”代码库中。 它涉及一个接口和一个实现。 该界面如下所示&#xff1a; public interface Bakery {Pastry bakePastry(Topping topping);Cake bak…

java textfield类方法_java.awt.TextField类

java.awt.TextField是一个文本框组件1.构造方法TextField()&#xff1a;创建一个默认长度为一个机器字符长的文本框TextField(int n)&#xff1a;创建一个指定长度为n个机器字符长的文本框TextField(String s)&#xff1a;创建一个文本框&#xff0c;该文本框的初始字符串为sTe…

广东金融学院java实验报告_《大学计算机Ⅰ》实验报告实验三

广东金融学院实验报告课程名称&#xff1a;大学计算机Ⅰ实验编号 及实验名称 姓 名 实验地点 指导教师蔡文璇 12-204课室 伍春晖博士实验三 中文Excel 2007实验系 别 班 级 实验时数 成 绩财经传媒系 经济秘书(2)班6学 号 实验日期 同组其他成员111602242 2011年 12 月07 日无一…

Markdown会干掉Html吗?

Markdown会干掉Html吗&#xff1f; 很明显&#xff0c;MarkDown正在已一种比病毒还快的速度传播着&#xff0c;量子的机器人语言也是深受其启发&#xff0c;当然了&#xff0c;在这个东西没搞出来之前&#xff0c;MarkDown就能干很多事情&#xff0c;比如在线编辑。 有了它&…

java动态变量名反射_Java动态性—反射 - Eclipse666的个人空间 - OSCHINA - 中文开源技术交流社区...

1.什么是动态语言&#xff1f;程序运行时&#xff0c;可以改变程序的结构或者变量类型&#xff1b;如Python&#xff0c;javaScriptfunction(){var s"var a3;var b4;" evals(s);}在执行javascript代码的的过程中&#xff0c;可以改变变量的值或插入语句改变结构。但J…

java中的module是什么意思_Angular - 组件中module.id的含义是什么?

Update for (2017-03-13) &#xff1a;删除了所有提及的moduleId . “组件相对路径”cookbook已删除我们在我们推荐的SystemJS配置中添加了一个新的SystemJS插件(systemjs-angular-loader.js) . 此插件动态地将templateUrl和styleUrls中的“组件相对”路径转换为“绝对路径” .…

HTML跳转

Window.location.href"http://www.baidu.com/"转载于:https://www.cnblogs.com/hucaihao/p/3514165.html

Spring注释,我从来没有机会使用第1部分:@primary

今天&#xff0c;我想起了我的一个老朋友&#xff08;primary&#xff09;&#xff0c;我们从教程到教程都遇到了他。 您知道在Spring Autowired批注中按类型工作&#xff0c;也就是说&#xff0c;如果Spring找到符合类型的匹配的合格bean&#xff0c;则会将其注入。让我们在示…

mysql构建栋_【转载】这次拆库 应是微服务化的拆分方式

一、现状现状.png我们将一个大而全的系统一拆为三&#xff0c;容器&#xff0c;发布&#xff0c;测试都已经独立出去&#xff0c;但是原始的数据库还是一套&#xff0c;现在需要将数据库做一个拆分&#xff0c;A、B、C三个系统有各自的数据库之后&#xff0c;我们的微服务化在现…

使用SharePoint 2010新增的文档集内容类型来管理文档

使用SharePoint 2010新增的文档集内容类型来管理文档 SharePoint 2010新增加的文档集功能是作为内容类型存在的&#xff0c;使用范围在网站集中&#xff0c;需要激活“文档集”功能到网站集才可以正常使用。文档集其实就是一个SharePoint产品增强的文件夹和内容类型的综合体现。…

如何使用Java 8流快速替换列表中的元素

假设您有一个项目清单&#xff1a; List<String> books Arrays.asList("The Holy Cow: The Bovine Testament","True Hip Hop","Truth and Existence","The Big Book of Green Design" );&#xff08;不要判断我。此随机书生成…

db2和mysql性能优化_DB2数据库性能调优的十个办法

这篇文章主要是针对e-business OLTP的10个性能方面的Tips。10. Monitor Switches打开Monitor Switch,才能获得性能方面的信息,命令如下db2 "update monitor switches using lock ON sort ON bufferpool ON uow ON table ON statement ON"9. Agents要保证有足够的agen…

处理远程通知的方法

IOS的一大特点就是可以随时向客户端push相关的信息。那么在客户端收到这些信息时&#xff0c;如何处理呢&#xff1f; 有两种情景需要处理&#xff0c; 一是&#xff1a;从状态栏下拉&#xff0c;点击通知栏里的一项&#xff0c;启动应用 二是&#xff1a;在锁屏界面&#xff0…