验证控件,解决用于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事件,不会影响服务器验证控件的验证功能 ...
随机推荐
- 【POJ3254】Corn Fields 状压DP第一次
!!!!!!! 第一次学状压DP,其实就是运用位运算来实现一些比较,挺神奇的.. 为什么要发“!!!”因为!x&y和!(x&y)..感受一下.. #include <iostre ...
- python3 抓取网页资源的 N 种方法
1. 最简单 import urllib.request response = urllib.request.urlopen('http://python.org/') html = response ...
- Memcache教程 Memcache零基础教程
Memcache是什么 Memcache是danga.com的一个项目,来分担数据库的压力. 它可以应对任意多个连接,使用非阻塞的网络IO.由于它的工作机制是在内存中开辟一块空间,然后建立一个Hash ...
- Moses训练与测试
参考:http://cache.baiducontent.com/c?m=9d78d513d9991cf00ffa940f47408f711925df252bd6a0502294ca5f92140d1 ...
- PAT (Basic Level) Practise 1040 有几个PAT(DP)
1040. 有几个PAT(25) 时间限制 120 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 字符串APPAPT中包含了两个单 ...
- PAT (Basic Level) Practise 1045 快速排序(离散化+主席树区间内的区间求和)
1045. 快速排序(25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 著名的快速排序算法里有一个经典的划分 ...
- CodeIgniter(CI)框架中的验证码
在CodeIgniter框架中,CI本身自带了验证码,但是查看文档的时候,发现: 需要新建一个表,用来存储验证码信息.因为习惯了session存储验证码信息,所以我把我认为比较好看的验证码应用在了CI ...
- (TODO:)下载图片,报错:warning: could not load any Objective-C class information from the dyld shared cache. This will significantly reduce the quality of type information available.
想使用NSInvocationOperation下载图片,然而并没有下载下来, NSData为nil, 还有报错:(打断点就报错) warning: could not load any Object ...
- P1220 关路灯
#include <bits/stdc++.h> using namespace std; int d[100], w[100], s, n; int dp[100][100][3]; i ...
- webbrowser 内核切换
修改注册表位置: [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER ...