注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

汇总技巧

你快乐我快乐.... 汇集各类技巧,传播技巧,让我们共同熟练运用技巧..

 
 
 

日志

 
 

解决CustomValidator控件不能验证控件值为空的问题  

2011-06-04 20:21:57|  分类: ◆ASP技巧 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在论坛上看到有关CustomValidator控件验证控件值为空的问题http://community.csdn.net/Expert/topic/3772/3772658.xml?temp=.9461634,控件的ControlToValidate,这样在提交的时候回进行验证
target=_blank>http://community.csdn.net/Expert/topic/3772/3772658.xml?temp=.9461634,">http://community.csdn.net/Expert/topic/3772/3772658.xml?temp=.9461634,控件的ControlToValidate,这样在提交的时候回进行验证

,代码如下:
@ Page Language="C#" AutoEventWireup="True" %
html
head
/head
body
 form runat="server" id="Form1" 
 asp:TextBox id="Text1"
 runat="server" /
 asp:CustomValidator id="CustomValidator1"
 ClientValidationFunction="ClientValidate"
 Display="Static"
 ErrorMessage="不能为空!"
 ForeColor="green"
 Font-Name="verdana"
 Font-Size="10pt"
 runat="server"/
br/
 asp:Button id="Button1"
 Text="Validate"
 runat="server"/
 /form
/body
/html
script language="javascript"
!--
function ClientValidate(sender, args)
{
if(Form1.Text1.value.length=0)
{
args.IsValid = false;
}else{
args.IsValid = true;
}
}
// --
/script
问题分析:
与所有其它验证控件类似(RequiredFieldValidator 除外),如果输入字段为空,则认为 CustomValidator 有效。所以造成CustomValidator没有办法验证空值, 让ControlToValidate 为空,客户端函数每次尝试提交时总会触发一次,这样就可以实现在提交时验证控件为空
以下信息摘自MSDN:http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfSystemWebUIWebControlsCustomValidatorClassTopic.asp
target=_blank>http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfSystemWebUIWebControlsCustomValidatorClassTopic.asp">http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfSystemWebUIWebControlsCustomValidatorClassTopic.asp

注意如果输入控件为空,则不会调用任何验证函数,并且验证将成功。使用 RequiredFieldValidator 控件要求用户在输入控件中输入数据。
可以在不设置 asp">ControlToValidate 属性的情况下使用 CustomValidator 控件。这种情况通常出现在验证多个输入控件或是验证无法与验证控件一起使用的输入控件(如 asp">CheckBox 控件)时。这种情况下,传递给 ServerValidate 事件的事件处理程序及客户端验证函数的 arguments 参数的 Value 属性将始终包含一个空字符串 ("")。但是,合适时仍将调用这些验证函数,以确定服务器和客户端的有效性。若要访问进行验证的值,您必须通过编程方式引用所要验证的输入控件,然后从相应的属性中检索该值。例如,若要验证服务器上的 CheckBox 控件,请不要设置验证控件的 ControlToValidate 属性,并将下列代码用于 ServerValidate 事件的处理程序。
用途:
您可能会说既然不为空,干嘛不用RequiredFieldValidator,当然是有原因的,比如我有个复选框,我想实现只有选择这个复选框的时候才要求某个文本框不为空,这样我就可以用下面的代码了:
@ Page Language="C#" AutoEventWireup="True" %
html
head
/head
body
 form runat="server" id="Form1" 
 asp:CheckBox id="CheckBox1" runat="server"/asp:CheckBox
 asp:TextBox id="Text1"
 runat="server" /
 asp:CustomValidator id="CustomValidator1"
 ClientValidationFunction="ClientValidate"
 Display="Static"
 ErrorMessage="不能为空!"
 ForeColor="green"
 Font-Name="verdana"
 Font-Size="10pt"
 runat="server"/
br/
 asp:Button id="Button1"
 Text="Validate"
 runat="server"/
 /form
/body
/html
script language="javascript"
!--
function ClientValidate(sender, args)
{
if(Form1.CheckBox1.checkedForm1.Text1.value.length=0)
{
args.IsValid = false;
}else{
args.IsValid = true;
}
}
// --
/script

  评论这张
 
阅读(298)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017