http://community.csdn.net/Expert/topic/5440/5440391.xml?temp=.6125299
在以上的源码的
protected override void RenderChildren(HtmlTextWriter writer)
后面加上
-------------------------------------------------------------
String cvID = " ";
Control cv = this.NamingContainer.FindControl(this.ControlToValidate);
if (cv != null)
{
cvID = cv.ClientID;
}
StringBuilder script = new StringBuilder();
script.Append( " <script type= 'text/javascript '> " + "\r\n ");
script.Append( " <!-- " + "\r\n ");
script.Append( "document.getElementById( ' " + cvID + " ').onfocus=function(){document.getElementById( ' " + ((WebControl)this.Controls[1]).ClientID + " ').innerHTML= ' " + this.Message + " '; " + this.FocusClientScript + "} " + "\r\n ");
script.Append( "document.getElementById( ' " + cvID + " ').onblur=function(){document.getElementById( ' " + ((WebControl)this.Controls[1]).ClientID + " ').innerHTML= ' " + this.ErrorMessage + " '; " + this.BlurClientScript + "}; " + "\r\n ");
script.Append( "//--> " + "\r\n ");
script.Append( " </script> ");
//writer.Write(script.ToString());
Page.ClientScript.RegisterClientScriptBlock(typeof(Type), " ", script.ToString());
------------------------------------------------
开始我是用
writer.Write(script.ToString());
的,但是这样当要验证的控件在这个验证控件之后的时候就会出错
因为document.getElementById找不到验证控件,因为他在后面还没有显现出来
然后我就用Page.ClientScript.RegisterClientScriptBlock(typeof(Type), " ", script.ToString());
但这样就什么js也没有注册
我想是因为这里只是控件,而不是页面的问题
遇到这种事情要怎么来解决
谢谢
------解决方案--------------------------------------------------------
控件.Attributs.Add( "onFocus ", "JavaSript ");
不知道行不行......
------解决方案--------------------------------------------------------