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
}
/// <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)");
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)");
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)");
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",所以我实在不知道这样到底错在哪里,
记录一下,请知道的达人解释一下。



浙公网安备 33010602011771号