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前要学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;头都大了后来…

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

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

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

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

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

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

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

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

基于visual Studio2013解决算法导论之019栈实现(基于数组)

&#xfeff;&#xfeff;&#xfeff;题目用数组实现栈解决代码及点评#include <stdio.h> #include <stdlib.h> #include <time.h> #include <malloc.h> #include<assert.h>typedef struct Stack {int nTop;int nLen;int *pnArr; }Stack, *PSta…

关闭终端php就退出进程_解决windows下php-cgi进程经常自动关闭

php-cgi在linux中有fpm管理&#xff0c;Apache不是采用cgi这种模式&#xff0c;于是乎就出现了&#xff0c;在windows下&#xff0c;采用nginx时&#xff0c;开启的php-cgi监听非常不稳定&#xff0c;经常奔溃关闭。现在解决了这个问题。注意是win32位系统下解决的&#xff0c;…

php为什么获取不到id,微信小程序无法获取到unionId怎么办

UnionID机制说明如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序)&#xff0c;可通过unionid来区分用户的唯一性&#xff0c;因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序)&#xff0c;用户的unionid是唯一的。换句话说&#x…

CUBA平台–新的Java企业应用程序框架

所以..你好&#xff0c;世界&#xff01; 我们的英语网站终于可以正常使用了&#xff0c;现在每个人都可以下载该平台&#xff0c;并可以以前所未有的速度更快地创建业务应用程序。 在我们决定与国际Java社区共享足够好之前&#xff0c;我们花了六年的永久发展和偶尔的革命&…

Abiword页面布局

Abiword页面布局 AP_Win32FrameImpl::_DocumentWndProc 文档窗口过程函数在WM_SIZE消息中设置FV_View对象的整体尺寸&#xff0c;跟窗体的&#xff1a;设备单位 转换成&#xff1a;布局单位。m_iWindowWidth 19695&#xff0c;m_iWindowHeight 8520 设备单位和布局单位的比例是…

php 文件内容对比,php 比较两个文件是否相同

-### php比较两个文件是否相同小一点的文件直接实用内置函数就可以了function md5_files($filename,$filename1){$file1 md5_file($filename);$file md5_file($filename1);if($file $file1){return "文件相同";}else{return "文件不同";}}md5_file()…

今日心得:给自己写信

1.tomorrow is another day 2.有一种人一认识就觉得温馨 3.这个世界只在乎你是否达到了一定的高度&#xff0c;不在乎你是站在巨人的肩膀还是垃圾上上去的 4.花儿总要在风雨的洗礼下盛开 5.有一种“无能为力”叫宿命 6.幸福是什么&#xff1f;有很多幸福的瞬间&#xff0c;幸福…

Hibernate READ_WRITE CacheConcurrencyStrategy如何工作

介绍 在我以前的文章中&#xff0c;我介绍了NONSTRICT_READ_WRITE二级缓存并发机制。 在本文中&#xff0c;我将使用READ_WRITE策略继续本主题。 直写式缓存 NONSTRICT_READ_WRITE是一种通读缓存策略&#xff0c;可更新最终无效的缓存条目。 尽管这种策略可能很简单&#xff0…

java hashmap替换key,HashMap 用可变对象作为 key 踩坑

点击上方☝Java编程技术乐园&#xff0c;轻松关注&#xff01;及时获取有趣有料的技术文章做一个积极的人编码、改bug、提升自己我有一个乐园&#xff0c;面向编程&#xff0c;春暖花开&#xff01;作者&#xff1a;Icharlehttps://icharle.com/hashmapkebianobj.html前言在 Ja…

(转)Eclipse平台技术概述

转载&#xff1a;周金根 http://zhoujg.blog.51cto.com/1281471/516833Eclipse&#xff1a;Eclipse平台技术概述2010-10-19 13:35:00标签&#xff1a;Eclipse 休闲 职场原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明…

带有光纤的可扩展,健壮和标准的Java Web服务

这篇博客文章讨论了负载下的基准Web服务性能。 要了解有关Web服务性能理论的更多信息&#xff0c;请阅读利特尔定律&#xff0c;可伸缩性和容错 。 使用阻塞和异步IO对Web服务进行基准测试 Web应用程序&#xff08;或Web服务&#xff09;如何在负载下&#xff0c;面对各种故障…

php js 图片旋转,jQuery实现可以控制图片旋转角度效果

本文实例讲述了jQuery实现可以控制图片旋转角度效果。分享给大家供大家参考&#xff0c;具体如下&#xff1a;运行效果截图如下&#xff1a;具体代码如下&#xff1a;/p>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">img { margin-top:100px; m…

【OAuth】快速入门

一、引言 1、什么是OAuth2.0&#xff1f; OAuth 2.0是一个关于授权的开放网络协议&#xff0c;允许用户授权第三方应用访问其在服务提供商上存储的资源&#xff08;如照片、视频、联系人列表&#xff09;&#xff0c;而无需将用户名和密码提供给第三方应用。OAuth 2.0在第三方应…