验证控件,解决用于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事件,不会影响服务器验证控件的验证功能 ...
随机推荐
- innerHTML 与 innerText 的区别
innerHTML指的是从对象的起始位置到终止位置的全部内容,包括Html标签.innerText 指的是从起始位置到终止位置的内容,但它去除Html标签.同时,innerHTML 是所有浏览器都支持 ...
- 关于 error: Operation is not valid due to the current state of the object。
今天碰到一个特别的异常. Operation is not valid due to the current state of the object. at System.Web.HttpValueC ...
- JAVA自定义异常
创建自定义异常是为了表示应用程序的一些错误类型,为代码可能发生的一个或多个问题提供新含义. 可区分代码运行时可能出现的相似问题的一个或多个错误,或给出应用程序中一组错误的特定含义. //自定义异常类需 ...
- HDU2527 哈夫曼编码
Safe Or Unsafe Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- 20145205 《Java程序设计》第9周学习总结
教材学习内容总结 第十六章 JDBC简介 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC目的:让Java程序设计人员在撰写数据库操作程序时可以有个统一的接口,无须依赖特 ...
- 【Java】实战Java虚拟机之五“开启JIT编译”
今天开始实战Java虚拟机之五“开启JIT编译” 总计有5个系列 实战Java虚拟机之一“堆溢出处理” 实战Java虚拟机之二“虚拟机的工作模式” 实战Java虚拟机之三“G1的新生代GC” 实战Ja ...
- soui使用wke时,设置js回调注意事项
wke响应网页js函数调用时注意: 必须等网页加载完成后,才能通过SetJsFunc设置js函数与c++回调的对应.网页未加载就设置,不会响应c++函数. 示例代码: wkeJSData* data ...
- python - socket - connection
前面有了TCP server和TCP client.在这个文章中我们建立tcp连接并且进行数据的发送. 例子,经常用到的echo功能.TCP client连接到server, 向server发送mes ...
- C# 反射之调用方法谈
反射的定义 反射提供了描述程序集.模块和类型的对象(Type 类型). 可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性. 如果代码中使用了特性 ...
- robot创建桌面图标(转载)
桌面ride图标,安装之后会自动创建(偶尔也会创建失败),创建桌面图标方法如下: 1. 新建快捷方式 在桌面右击鼠标,弹出的菜单选择 新建-快捷方式 ,然后在"请键入对象"的位置输 ...