验证控件,解决用于ajax提交前的验证,不是submit提交的验证
//解决ajax提交前的验证问题,主要用于onclick事件时对某一区域中(可以是form,div,table中的等)控件的验证。(function ($) {
var v;
//Create a new Validator instance for jQuery
v = $.FdyValidator = new FdyValidator();
//extend all jQuery instance and so that all jQuery instance could execute validator
//
$.fn.extend({
FormValidate: function (handler, custom_msg) {
return v.FormValidate($(this).selector, handler, custom_msg);
},
InitValidate: function (handler, custom_msg) {
return v.InitValidate($(this).selector, handler, custom_msg);
}
});
})(jQuery);
//class
function FdyValidator() {
this.version = 1.0;
};
FdyValidator.Tag = { "TagName": "input", "AttrName": "validate" };
FdyValidator.prototype.InitValidate = function (form, handler, custom_msg) {
var _form = form;
var _handle = (handler || "follow").split(" "); // should convert to arrary
var _message = custom_msg || FdyValidator.message;
//默认返回true
var ret_val = true;
var fail = 0;
$(_form + " :" + FdyValidator.Tag["TagName"]).each(function () {
// var succ = true;
var attr = $(this).attr(FdyValidator.Tag["AttrName"]);
if (typeof (attr) != "undefined") {
//添加绑定
$(this).blur(function () { FdyValidator.Validator($(this),_handle,_message) });
}
});
};
FdyValidator.Validator = function (item, handler, custom_msg) {
var succ = true;
var _handle = handler; // should convert to arrary
var _message = custom_msg || FdyValidator.message;
var val = item.val(); //取得元素的值
var attr = item.attr(FdyValidator.Tag["AttrName"]);
var func_names = attr.split(" "); //取得要验证的rules
var msg; //save message if error occured
for (var i in func_names) {
//遍历rules
var msg_index = ["program"]; //默认一个数组存放错误索引
succ = false;
if (func_names[i] in FdyValidator.rules) {
msg_index = [func_names[i]];
//验证表达式是否正确
if (FdyValidator.rules[func_names[i]].validate(item, val, msg_index))
succ = true;
}
if (!succ) {
//验证不通过
if (msg_index[0] in _message)
msg = _message[msg_index[0]];
else
msg = _message["unknown"];
for (var j in _handle) {
if (_handle[j] in FdyValidator.ErrorHandle) {
FdyValidator.ErrorHandle[_handle[j]](item, succ, msg);
}
}
break;
}
else {
FdyValidator.ErrorHandle["remove"](item);
}
}
}
FdyValidator.prototype.FormValidate = function (form, handler, custom_msg) {
var _form = form;
var _handle = (handler || "follow").split(" "); // should convert to arrary
var _message = custom_msg || FdyValidator.message;
//默认返回true
var ret_val = true;
var fail = 0;
$(_form + " :" + FdyValidator.Tag["TagName"]).each(function () {
var succ = true;
var attr = $(this).attr(FdyValidator.Tag["AttrName"]);
if (typeof (attr) != "undefined") {
var val = $(this).val(); //取得元素的值
var func_names = attr.split(" "); //取得要验证的rules
var msg; //save message if error occured
for (var i in func_names) {
//遍历rules
var msg_index = ["program"]; //默认一个数组存放错误索引
succ = false;
if (func_names[i] in FdyValidator.rules) {
msg_index = [func_names[i]];
//验证表达式是否正确
if (FdyValidator.rules[func_names[i]].validate($(this), val, msg_index))
succ = true;
}
if (!succ) {
//验证不通过
fail = parseInt(fail) + 1;
if (msg_index[0] in _message)
msg = _message[msg_index[0]];
else
msg = _message["unknown"];
for (var j in _handle) {
if (_handle[j] in FdyValidator.ErrorHandle) {
FdyValidator.ErrorHandle[_handle[j]]($(this), succ, msg);
}
}
break;
}
else {
FdyValidator.ErrorHandle["remove"]($(this));
}
}
ret_val = ret_val && succ;
}
});
return fail == 0;
};
FdyValidator.InnerValidate = function (str, rule) {
if (str == "")
return true;
var re = new RegExp(rule);
return (re.test(str));
};
FdyValidator.rules = {
"required": { //must be filled
reg: /^[ ]+$/,
validate: function (element, str) { if (str == "") return false; return (!FdyValidator.InnerValidate(str, this.reg)); }
},
"email": { // email
reg: /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/,
validate: function (element, str) { return (FdyValidator.InnerValidate(str, this.reg)); }
//validate=FdyValidator.InnerValidate
},
"cardno": { // cardno for campus card
reg: /^\d+$/,
validate: function (element, str) { return (FdyValidator.InnerValidate(str, this.reg)); }
},
"cardpwd": { // password for campus card
reg: /^\d{6}$/,
validate: function (element, str) { return (FdyValidator.InnerValidate(str, this.reg)); }
},
"cname": { // chinese name
reg: /[\u4e00-\u9fa5]/,
validate: function (element, str) { return (FdyValidator.InnerValidate(str, this.reg)); }
},
"integer": { // integer, max & min is optional
reg: /^[0-9]*[1-9][0-9]*$/,
validate: function (element, str, msg_index) {
var ret_val;
var msg = msg_index[0] || "integer";
ret_val = FdyValidator.InnerValidate(str, this.reg);
var value = parseInt(str || 0);
var min_val = 0, max_val = 0;
if (typeof (element.attr("min")) != "undefined") {
min_val = parseInt(element.attr("min"));
msg_index.push(min_val.toString());
if (value < min_val)
ret_val = false;
msg = msg + "_min";
}
if (typeof (element.attr("max")) != "undefined") {
max_val = parseInt(element.attr("max"));
msg_index.push(max_val.toString());
if (value > max_val)
ret_val = false;
msg = msg + "_max";
}
msg_index[0] = msg;
return ret_val;
}
},
"ip": { //ip address
reg: /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/,
validate: function (element, str) { return (FdyValidator.InnerValidate(str, this.reg)); }
},
"username": { // user name
reg: /^[a-z]\w{2,18}$/,
validate: function (element, str) { return (FdyValidator.InnerValidate(str, this.reg)); }
}
};
FdyValidator.message = {
"required": "此项为必填项,不能为空!",
"email": "非法的EMail地址,请重新输入!",
"cardno": "不正确的校园卡号,请重新输入!",
"cardpwd": "不正确的校园卡密码,请重新输入!",
"cname": "错误的中文名!",
"integer": "请输入整数!",
"integer_min": "请输入大于[ {0} ]的整数!",
"integer_max": "请输入小于[ {0} ]的整数!",
"integer_min_max": "请输入[ {0} - {1} ]之间的整数!",
"ip": "请输入正确的IP地址",
"username": "请输入以字母开头,后续可以包括下划线、字母、数字的最少三位,最长19用户名,",
"program": "程序错误(非法的验证属性),请检查!",
"unknown": "未定义错误!",
"success": "验证通过!"
};
FdyValidator.ErrorHandle = {
"follow": function (item, succ, msg) {
if (item.next("label").length > 0) {
item.next("label").remove(); //remove prompt if existed
}
if (!succ)
$("<label class='error'></label>").attr("for", item.attr("id")).text(msg).insertAfter(item);
item.attr("class",item.attr("class") + " error");
},
"remove": function (item)
{
if (item.next("label").length > 0) {
item.next("label").remove(); //remove prompt if existed
item.attr("class",FdyValidator.StrHandle["removeCss"](item.context.className));
}
}
};
FdyValidator.StrHandle = {
"removeCss": function (css) {
var new_css = "";
var strs = new Array();
strs = css.split(" ");
for (i = 0; i < strs.length ; i++)
{
if (strs[i] != "error") {
new_css += strs[i] + " ";
}
}
return new_css;
}
};
input.error { border: 1px dotted red; }
label.error { color: red; }
使用方法:
<input id="email" type="text" name="email" validate="required email"/></td> 在jquery.form.js ajaxSubmit()提交前的验证 var t = $("#form1").FormValidate(); t = false不继续 只要onclick事件 页面初始化时的验证 $(document).ready(function () { $("#form1").InitValidate(); });
验证控件,解决用于ajax提交前的验证,不是submit提交的验证的更多相关文章
- ASP.NET_验证控件(class0620)
为什么使用验证控件 当需要让用户输入数据时,用户有可能输入不符合我们程序逻辑要求的信息,所以我们要对输入进行验证. 客户端验证(用户体验,减少服务器端压力) 服务器端验证(防止恶意攻击,客户端js很容 ...
- 初识 Asp.Net数据验证控件
在我们建立一个Asp.Net Web应用程序的时候我一般都会注意我们工具如图
- 016. asp.net的验证控件
RequiredFileldValidator: 检查某个字段是否输入; 空值检查 主要属性: ControlToValidate:要验证的控件 ErrorMessage:错误提示信息 Compare ...
- ASP.NET中验证控件的使用
转自:http://www.cnblogs.com/yangmingming/archive/2010/03/09/1682006.html 前言: 前几日,无奈用JS判断控件的有效性,发现的确是一件 ...
- 【转】ASP.NET中验证控件的使用
前言: 前几日,无奈用JS判断控件的有效性,发现的确是一件费力.费神的事情!特别是针对邮件格式.邮政编码等的关于正则表达式的JS验证(其中涉及正则表达式的比较等,较烦~).其实对于这些常用的控件有效性 ...
- ASP.NET验证控件一
为了更好地创建交互式Web应用程序.加强应用程序安全性,程序开发人员应该对用户输入的内容进行验证. ASP.NET提供了一系列输入验证控件,使用这些控件用户可以很方便地实现输入验证. ASP.NET还 ...
- Js表单验证控件-02 Ajax验证
在<Js表单验证控件(使用方便,无需编码)-01使用说明>中,写了Verify.js验证控件的基本用法,基本可以满足大多数验证需求,如果涉及服务端的验证,则可以通过Ajax. Ajax验证 ...
- 验证控件插图扩展控件ValidatorCalloutExtender(用于扩展验证控件)和TextBoxWatermarkExtender
<asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptMan ...
- 当有“Button1.Attributes.Add("onclick", "return confirm('你确定要保存修改吗?')");”时,验证控件失效的解决方法
同一个页面用Js和服务器验证控件OnClientClick提交问题 实现功能: 点击Button按钮的OnClientClick事件,不会影响服务器验证控件的验证功能 ...
随机推荐
- 非递归创建二叉树( C++队列 )
非递归按照 层序 创建二叉树,利用 队列(即可先进先出特点)存放已访问的结点元素的地址. 初始化:front=rear= -1: 每储存一个结点元素 rear+1 ,利用 rear%2==0 来使 f ...
- sqlserver跨服务器数据库sql语句
1.启用Ad Hoc Distributed Queries:exec sp_configure 'show advanced options',1reconfigureexec sp_configu ...
- 爬虫, 获取登录者的外网IP
笔者学习了一下用爬虫, 获取登录者的外网IP. 首先导入Jsoup的jar包 public class RetrivePage { private static String url="ht ...
- List集合特有的迭代器 ListIterator
- js实现两个页面之间跳转参数传递
html在设计时,规定跳转地址后加"?"表示从此开始为跟随页面地址跳转的参数. 有时候,我们希望获得相应的跳转前页面里的内容,这时候我们就可以考虑将内容以参数形式放到地址中传过来, ...
- java并发编程(一)可重入内置锁
每个Java对象都可以用做一个实现同步的锁,这些锁被称为内置锁或监视器锁.线程在进入同步代码块之前会自动获取锁,并且在退出同步代码块时会自动释放锁.获得内置锁的唯一途径就是进入由这个锁保护的同步代码块 ...
- 第一章-第七题( 有人认为,“中文编程”, 是解决中国程序员编程效率一个秘密武器,请问它是一个 “银弹” 么? )--By 侯伟婷
首先,“银弹”在百度百科中的解释是银色的子弹,我们更熟知的“银弹”一词,应该是在<人月神话>中提到的.银弹原本应该是指某种策略.技术或者技巧可以极大地提高程序员的生产力[1].此题目中关于 ...
- HDU2608-0 or 1(数论+找规律)
一,题意: 给定一个n,定义S(n)=T(1)+T(2)+T(3)+...+T(n),T(n)是n的所有因子之和,最后输出S(n)%2的值 (因子就是所有可以整除这个数的数,不包括这个数自身)二,思路 ...
- C#拾遗-接口与抽象类
抽象类中可以有构造函数(无参构造函数和有参构造函数)无参构造函数在子类实例化时被调用有参构造函数必须显示调用 抽象类中可以有抽象方法 但是不能有方法体,子类必须实现抽象方法子类必须重写抽象类中的抽象方 ...
- 总结-eclipse
1.eclipse的workspace历史记录 打开eclipse/configuration/.settings/org.eclipse.ui.ide.prefs,把RECENT_WORKSPACE ...