教你只用一个Validator对多个控件进行验证

简介:

 这个技巧是非常有用。如果我们有多个控件,我们只用一个验证控件来验证它 。这将减少页面大小和改善性能,因为每个验证控件在客户端都会被渲染成span,如果一个页面包含上百个控件,就会使得页面非常的庞大臃肿。

     在这篇文章的Demo中,动态创建的几个textbox,我只使用一个验证控件去验证它们。

 1.aspx页面上:

复制代码
1  < body >
2       < form id = " form1 "  runat = " server " >
3       < div >
4           < asp:CustomValidator ID = " CustomValidator1 "  runat = " server "   ></ asp:CustomValidator >
5          < asp:ValidationSummary ID = " ValidationSummary1 "  runat = " server "   />
6       </ div >
7 
8       </ form >
9  </ body >
复制代码

2.在服务端将验证控件和TextBox的onfocus事件关联起来:

复制代码
 1       protected   void  Page_Load( object  sender, EventArgs e)
 2      {
 3           if  ( ! IsPostBack)
 4          {
 5               for  ( int  i  =   0 ; i  <   10 ; i ++ )
 6              { 
 7                  TextBox tb  =   new  TextBox();
 8                  tb.ID  =   " tb "   +  i.ToString();
 9                  tb.Attributes.Add( " onfocus " " HookUpControl(this,' "   +  CustomValidator1.ClientID  +   " ') " );
10                  Page.Form.Controls.Add(tb);
11              }
12          }
13      }
复制代码

3.HookUpControl函数如下:

复制代码
1          function  HookUpControl(curObj, validatorClientID) 
2          {
3               var  validationControl  =  document.getElementById(validatorClientID);
4              validationControl.controltovalidate  =  curObj.id;
5              validationControl.clientvalidationfunction  =   " validatetextbox " ;
6              validationControl.validateemptytext  =   " true " ;
7              ValidatorHookupControl(curObj, validationControl);
8          }
复制代码

4.客户端的验证函数如下:

复制代码
 1           function  validatetextbox(sender, args) 
 2          {
 3               if  (args.Value  ==   ""
 4              {
 5                  sender.errormessage  =   " <b>该栏位不能为空。 " ;
 6                  sender.innerHTML  =   " <b>该栏位不能为空。 " ;
 7                  args.IsValid  =   false ;
 8                    return ;
 9              }
10               if  (isNaN(args.Value)) 
11              {
12                  sender.errormessage  =   " <b>该栏位只能是数字。 " ;
13                  sender.innerHTML  =   " <b>该栏位只能是数字。 " ;
14                  args.IsValid  =   false ;
15                    return ;
16               }
17                if  (Number(args.Value)  <   100 ) {
18                   sender.errormessage  =   " <b>该栏位的值不能小于100。</b> " ;
19                   sender.innerHTML  =   " <b>该栏位的值不能小于100。</b> " ;
20                   args.IsValid  =   false ;
21                    return ;
22               } 
23         }
复制代码

其实主要使用了ValidatorHookupControl(curObj, validationControl)的功能。

 

在第一个TextBox中输入1,提示:该栏位的值不能小于100。

在第二个TextBox中输入a,提示:该栏位只能是数字。

在第三个TextBox输入值,失去焦点后,再删除,提示:该栏位不能为空。。

onfocus事件可以换成你相应的事件,validatetextbox函数也可以扩展等等。




本文转自麒麟博客园博客,原文链接:http://www.cnblogs.com/zhuqil/archive/2010/03/16/Validator.html,如需转载请自行联系原作者

相关文章
|
Python
数学建模——统计回归模型
数学建模——统计回归模型
467 0
|
人工智能 算法 TensorFlow
AI小白徒手搭建人工智能平台
好,我是小马学AI的小编,是一名在职的核电仪控工程师,博主从事AI外呼技术多年,有问题或要演示站找博主,免费技术支持。专业是核电厂主控制室信息处理,由于在工作中会涉及到一些相关的数据处理领域,因此渐渐对人工智能产生了兴趣
1095 0
|
JavaScript 前端开发 数据可视化
TradingView量化交易平台API对接开发部署实现
TradingView量化交易平台API对接开发部署实现
|
缓存 小程序 数据库
微信小游戏开发系列教程
嗨!大家好,我是小蚂蚁。这里整理了一下公众号中写过的一些教程文章,它们已经帮助过很多人做出了自己的第一款游戏,希望还能够继续帮助更多想要做游戏的朋友,进入游戏开发世界的大门。
727 0
|
新零售 运维 安全
案例酷 | 迪卡侬:体育IP跑上云,从给业务管好“身份证”开始
编者按: 迪卡侬中国在业内率先进入全云时代,同时也是在全球范围内首次实现云服务属地化。在这场关键的数字化转型进程中,与阿里云产品研发团队碰撞思路火花,在云上管理身份权限体系的建设中,联手孵化和打造一款”完美”契合企业需求的产品,以技术赋能新零售体验,在新消费时代支持迪卡侬全产业链智能开发的高速更新迭代,也将为行业探索数字化转型的新可能。 全文约4440字,建议阅读时间13分钟。
625 0
|
Java API Android开发
快来学习 Compose 中的 “ViewPager” 吧
学习 Compose 中的 “ViewPager”
850 0
快来学习 Compose 中的 “ViewPager” 吧
|
负载均衡 网络协议 测试技术
笔记-CDN绕过
CDN绕过
517 0
笔记-CDN绕过
|
机器学习/深度学习 边缘计算 运维
端计算Walle:2235亿次运算,为了无法计算的端智能价值
本文知识点提炼: 1、端计算在移动设备上的应用探索 2、技术方案与核心模块设计 3、总结与展望
3258 0
端计算Walle:2235亿次运算,为了无法计算的端智能价值