1
private void Focus(string sDomID)
{
RegScript("focus", "document.getElementById(\"" + sDomID + "\").focus();");
}
2
public void Select(TextBox txtBox)
{
string sScript = "var dom=document.getElementById(\"" + txtBox.ClientID + "\");if(dom){dom.select();}\n";
RegScript("Select", sScript);
}
註:
(1) 當使用母板(.MASTER)和使用者控制項(.ASCX)的時候,使用者控制項的頁面JavaScript中需要使用Asp.net的控制項ID,主版頁面的子頁面JavaScript中需要使用Asp.net的控制項ID
(2)\" 的意思是:因為寫在背景.js檔案中,C#把 " 認識成標誌其為字串的一種方式,但是到JavaScript前台的時候將這個 " 給丟掉了,加一個 \ 逸出字元,告訴C#編輯器,這個就是單單的 " ,這樣到JavaScript前台中,就會被翻譯成 " ,不會丟失了。
3
擷取由 ASP.NET 產生的伺服器控制項標識符。
問題一: 使用者控制項的頁面JavaScript中需要使用Asp.net的控制項ID,出現不一致。
問題二:主版頁面的子頁面JavaScript中需要使用Asp.net的控制項ID,出現不一致。
解決辦法:
document.getElementById("<%=TextBox1.ClientID%>").value="1234567";
此代碼可以在用戶端完成對伺服器端控制項的訪問,由於ASP.NET會為把伺服器端控制項在用戶端的呈現產生不同的名稱,所以此功能比較有用擷取。
注意採用此解決辦法的前提: Asp.net的控制項為靜態控制項(通過工具添加的控制項)
問題三: 動態建立控制項的ClientID的獲得存在:不能在頁面中採用"<%=TextBox1.ClientID%>".方法獲得(不能的方法,因為控制項是動態建立的);也不能在頁面指令碼中採用TextBox1.ClientID的方法獲得(獲得的ID是不正確的)。
解決辦法:
(CitySpecProductScheduledControl.ascx.cs程式碼片段 )
TextBox text = new TextBox();
text.MaxLength = 12;
text.Columns = 12;
text.Text = DateTime.Now.ToShortDateString();
text.ID = "dateId";
text.Attributes.Add("onclick", "calendar()");
text.Attributes.Add("class", "text");
HtmlImage dateimg = new HtmlImage();
dateimg.Src = "../CommonImages/cal.gif";
string js = string.Format("calendar({0}_{1})",this.ClientID, text.ClientID); //關鍵代碼,按照用戶端ClientID的產生規則手工產生。
dateimg.Attributes.Add("onclick", js);
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/heling0223/archive/2009/11/04/4765598.aspx