验证控件,解决用于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事件,不会影响服务器验证控件的验证功能 ...
随机推荐
- 【BZOJ】3437: 小P的牧场
题意 n个点,需要再一些点建立控制站,如果在第\(i\)个建站,贡献为\(a[i]\).假设前一个站为\(j<i\),则\([j+1, i]\)的点的贡献是\(\sum_{k=j+1}^{i} ...
- 【Linux】df命令 ,查看磁盘容量。
Oracle 导库时,失败,原因为磁盘满了, 记录下查看磁盘容量的指令 1.命令格式: df [选项] [文件] -a 全部文件系统列表 -h 方便阅读方式显示 -H 等于“-h”,但是计算式,1K= ...
- Glyphicon 字体图标
Bootstrap中的Glyphicon 字体图标 在Bootstrap框架中也为大家提供了近200个不同的icon图片,而这些图标都是使用CSS3的@font-face属性配合字体来实现的icon效 ...
- 天猫登录源码 POST C#
HttpHelper 请从网络中搜索: public partial class LoginTMall : Form { public LoginTMall() { InitializeCompone ...
- Daikon Forge GUI Library(dfgui)之Event Binding
点击按钮并弹出对话框,就用下面的大问题按钮吧 1,选中按钮,Component/Daikon Forge/Data Binding/Event Binding 2,UI上创建DfPanel,并将其Be ...
- delphi URL 编码的转换
先介绍一下,Delphi中处理Google的URL编码解码,其中就会明白URL编码转换的方法的 从delphi的角度看Google(谷歌)URL编码解码方式 在网上搜索了一下,似乎没有什么关于goog ...
- 开源战棋 SLG 游戏框架设计思考(一)简介和游戏引擎
战棋 SLG 游戏 SLG(Simulation Game)游戏是模拟游戏的简称.战棋类的SLG有两种:一种是 War Game 中的兵棋推演分支,常见的游戏有战争艺术3(TOAW3 — The Op ...
- 面试习题之设计模式 C#观察者模式(猫叫老鼠惊走主人醒)
腾讯云测试|TEST Tencent Cloud /* * CatShout.cs */ using System; using System.IO; using System.Collections ...
- JavaScript:数组大全
栈/队列 数组es3: pop删除最后一项(栈) shift删除第一项(队列) push增加到最后(栈) unshift增加到最前(队列) reverse翻转 join转字符串 slice截取(切片) ...
- sweetalert api中文开发文档和手册
官网和下载地址: http://t4t5.github.io/sweetalert/ 2016年10月30日14:10:21 废话,目前php开发越来越API话,所以php方法很多都是json返回数 ...