注册 登录
编程论坛 ASP.NET技术论坛

遇到一个控件的问题,恳请大牛们帮一下

yehuanfeng 发布于 2010-12-22 22:16, 968 次点击
        CustomValidator可以在客户端和服务器端都可以添加验证函数,对服务器端的验证机制我比较容易理解,但是对于客户端的不知道怎么理解,下面的代码可以实现客户端的验证,但是我不知道具体是怎么样的??
    <asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="密码长度至少为6" ClientValidationFunction ="ClientValidateUserName" ControlToValidate="TextBox1"></asp:CustomValidator>
            <script language="javascript" type="text/javascript">
                function ClientValidateUserName(source,args)
                {
                    //alert(source);source=CustomValidator1,为验证控件
                    //alert(args);
                    var obj=document.getElementById("TextBox1");
                    if(obj.value.length<6)
                    {
                        args.IsValid=false;
                    }
                    else
                    {
                        args.IsValid=true;
                    }
                }
             </script>   
      其中TextBox1是被验证的对象控件。这里的关联性看不出来啊,谢谢!!!
12 回复
#2
wangnannan2010-12-23 08:30
其中TextBox1是被验证的对象控件。这里的关联性看不出来啊
不是很理解LZ的意思
var obj=document.getElementById("TextBox1");

#3
yehuanfeng2010-12-23 09:11
回复 2楼 wangnannan
这样说吧,就是这里的args只是函数中自己定义的参数,它怎么会有IsValid属性呢,还有就算它有属性,它的属性怎么和CustomValidator控件对应起来??
#4
wangnannan2010-12-23 09:35
这是它自带的参数啊 args 其实就是 arguments
具有以下两个属性的对象:Value 和 IsValid。使用此参数可以获取控件的值,以根据自定义验证例程验证并指示该值是否有效。
source 参数是对为 CustomValidator 控件呈现的 <span> 元素的引用。因此,您可以编程的方式控制 <span> 标记,如修改 InnerHtml 属性。
服务器端验证与客户端验证一样,可以通过使用 arguments 参数的 Value 属性来访问要验证的输入控件中的字符串。通过设置 arguments 参数的 IsValid 属性返回验证结果。
#5
wangnannan2010-12-23 09:38
客户端验证 就是JS验证么
程序代码:
<span id="CustomValidator1" style="color:Red;visibility:hidden;">
        <script language="javascript" type="text/javascript">
                function ClientValidateUserName(source,args)
                {
                    //alert(source);source=CustomValidator1,为验证控件
                    
//alert(args);
                    var obj=document.getElementById("TextBox1");
                    if(obj.value.length<6)
                    {
                        args.IsValid=false;
                    }
                    else
                    {
                        args.IsValid=true;
                    }
                }
             </script>  

        </span>
CustomValidator1 转换后就是一个span了
#6
yehuanfeng2010-12-23 18:01
回复 4楼 wangnannan
还是有点模糊,这里的args只是自己定义的,我也可以把它定义成其它的,比如AAAA,结果还会一样吗?
还有 var obj=document.getElementById("TextBox1"); 具有什么作用?
#7
冰镇柠檬汁儿2010-12-24 00:18
回复 6楼 yehuanfeng
function ClientValidateUserName(source,args)
{
    //读取TextBox1的对象,obj.value就能读取到TextBox1中的值了
    var obj=document.getElementById("TextBox1");
    //在这里读到TextBox1中的值,判断其长度是否小于6,如果小于就返回false,从这里看args应该是一个对象,属于地址操作的,所以其他地方应该能得到args.IsValid的最终值
    if(obj.value.length<6)
                    {
                        args.IsValid=false;
                    }
                    else
                    {
                        args.IsValid=true;
                    }
                }
#8
wangnannan2010-12-24 08:22
回复 6楼 yehuanfeng
那肯定不行了? 我问你static用 aaa替换能声明静态变量么?
#9
yehuanfeng2010-12-24 09:56
回复 8楼 wangnannan
我通过实验发现,改变args完全没有关系(比如AAAA),但是如果把前面的一个参数source去掉的话,结果就不对了,还有就是这里的source也可以替换成其它的字符,比如AAA
#10
wangnannan2010-12-24 10:01
回复 9楼 yehuanfeng
是么? 这个没试过 那俺就不知道了

[ 本帖最后由 wangnannan 于 2010-12-24 10:03 编辑 ]
#11
yehuanfeng2010-12-24 10:09
回复 10楼 wangnannan
我是初学者,有些东西不是很清楚,我个人觉得只要是一个量的属性,那么只要在这个量的后面加一个“.”,就会有各种属性自动眺出来,然后选择其中一个就行,但是这里args的IsValid属性根本都是自己手打出来的啊,所以我就觉得心里没底,不好理解,呵呵,请问您是怎么看待的??
#12
wangnannan2010-12-24 10:29
恩 那可能就是这样 比方说哈function(source argument)这里 source  argument是其它也好 比方说aaa  但是它必须有两个参数才能被
CustomValidator 识别 第一个参数用于 控件呈现的 元素的引用第二个参数 有两个属性Value 和 IsValid。使用此参数可以获取控件的值,以根据自定义验证例程验证并指示该值是否有效 和服务端对比一下有可能就是这样吧
程序代码:
以下是代码片段:
protectedvoid cvLength_ServerValidate(object source, ServerValidateEventArgsargs)
{
if(args.Value.Length > 5)
{
args.IsValid = true;
}
else
{
args.IsValid = false;
}
}

#13
wangnannan2010-12-24 10:36
但是这里args的IsValid属性根本都是自己手打出来的啊,所以我就觉得心里没底,不好理解
换个IDE比方说VS2010 VS2008这里就有提示了
只有本站会员才能查看附件,请 登录
1