验证控件,解决用于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事件,不会影响服务器验证控件的验证功能 ...
随机推荐
- 学习js 优先级
以前很少关注js优先级 主要哦是技术菜鸟老加班没时间技术菜鸟 最重要的是记不住特点.......... 1级 . [] () 字段访问.数组索引.函数调用和表达式分组 通过观察可以发现 . 字段访问- ...
- PHP的排序算法跟查找算法
排序算法: (1)冒泡排序 $arr = array(15,8,20,50,37,85,10,5,11,4); //冒泡排序 function maoPao($arr){ for($i = 0; $i ...
- MySQL导出数据
1.MySQL导出数据库 只导出数据库结构:选中数据库-->右键—>数据传输—>高级—>取消勾选记录选项.
- 第 12 章 Ajax
学习要点:1.Ajax 概述2.load()方法3.$.get()和$.post()4.$.getScript()和$.getJSON()5.$.ajax()方法6.表单序列化 Ajax 全称为:“A ...
- [转]SQL三种获取自增长的ID方法
最新更新请访问: http://denghejun.github.io SQL SERVER中的三种获得自增长ID的方法 这个功能比较常用,所以记下来以防自己忘掉. SCOPE_IDENTIT ...
- CSS3的高级特性
CSS3对响应式设计非常有用:使用CSS3替代图片,在有带宽限制的网页中可有效减少http请求(从而使网页加载更快),并可使网页更灵活.更容易维护. 在开发CSS3时,要记住添加相关的浏览器私有前缀以 ...
- IConfigurationSectionHandler 使用~
读取webconfig中自定义的xml 处理对特定的配置节的访问. webconfig <configSections> <section name="NopConfig ...
- System.Linq.Dynamic的使用
项目中经常用到组合条件查询,根据用户配置的查询条件进行搜索,拼接SQL容易造成SQL注入,普通的LINQ可以用表达式树来完成,但也比较麻烦.有个System.Linq.Dynamic用起来比较方便. ...
- C++中为什么要将析构函数定义成虚函数
构造函数不可以是虚函数的,这个很显然,毕竟虚函数都对应一个虚函数表,虚函数表是存在对象内存空间的,如果构造函数是虚的,就需要一个虚函数表来调用,但是类还没实例化没有内存空间就没有虚函数表,这根本就是个 ...
- 解决点击cell时,UILabel的背景颜色消失的问题
-(void)setSelected:(BOOL)selected animated:(BOOL)animated{ [super setSelected:selected animated:anim ...