GridView的客户端检测(一个奇怪的问题)

 

       最近第一次做web的项目,感觉头大,这web跟windows区别太大了,今天就遇到一个奇怪的问题。
      我的GridView上有一列放的是TextBox要求只能输入数字,现在我希望当光标离开TextBox的时候就进行检测,所以我写了一段通用的代码。

 1/// <summary>
 2    /// 得到一段检测输入是否为有效数据的脚本
 3    /// 使用方法:  txtBox..Attributes.Add("onBlur", "ClientCheckFunction('txtBox',10,4)");
 4    ///             说明检测的TextBox为 txtBox,并且整数位为10位,小数位为4位
 5    ///  注意:先要RegisterStartupScriptd调用
 6    /// </summary>
 7    /// <returns></returns>

 8    private  string GetCheckScript()
 9    {
10        return @"<script language=""javascript"">
11
12                        function ClientCheckFunction(strName,nInt1,nInt2)
13                        {
14                          if(isNaN(document.all(strName).value))
15                           {
16                             alert(""您输入的不是合法的数字。"");
17                             document.all(strName).focus();
18                            document.all(strName).select();
19                             return false;
20                           }
21                         
22                          var sm = '^(\\d){1,'+nInt1+'}$|^(\\d){1,'+nInt1+'}\\.(\\d){1,'+nInt2+'}$';
23                          var m = new RegExp(sm);
24                          if(!m.test(document.all(strName).value))
25                           {
26                            alert('输入的数字整数位最多'+nInt1+'位,小数位最多'+nInt2+'位');
27                            document.all(strName).focus();
28                            document.all(strName).select();
29                             return false;
30                            }
31                           return true;
32                        }</script>";
33
34
35    }


对于这段代码的使用如下:

1        if (!Page.IsStartupScriptRegistered("ClientCheck"))
2            {
3                Page.RegisterStartupScript("ClientCheck", GetCheckScript());
4            }

5            txtInPoint.Attributes.Add("onBlur""ClientCheckFunction('txtInPoint',10,4)");


txtInPoint是一个不在grid中TextBox

如果对于GridView中textbox
   

1 TextBox txt = (System.Web.UI.WebControls.TextBox)e.Row.FindControl("txtPoint");
2 txt.Attributes.Add("onblur""ClientCheckFunction('"+txt.ClientID+"',10,4)");

这样是正常的,改为如下

1                TextBox txt = (System.Web.UI.WebControls.TextBox)e.Row.FindControl("txtPoint");
2
3                //txt.Attributes.Add("onblur", "ClientCheckFunction('"+txt.ClientID+"',10,4)");
4                txt.Attributes.Add("onblur""ClientCheckFunction('txtPoint',10,4)");

这就有问题了,但实际上我跟了好几次,发现txt.ClientID就是"txtPoint",所以我实在不知道这样到底错在哪里,
记录一下,请知道的达人解释一下。
posted @ 2006-07-20 15:48  彷徨......  阅读(531)  评论(3编辑  收藏  举报