簡體   English   中英

如何在使用asp.net創建的Java腳本中查找動態控件

[英]How to find Dynamic control in Java Script created using asp.net

我已經在ASP.NET中創建了動態控件,如下所示。

首先我創建了復選框

 CheckBox chkDynamic = new CheckBox(); 

然后

 TextBox txtDynamic = new TextBox();
 txtDynamic.ID = "txtDynamic";

這些控件添加在tablecell中,而tableRow中添加,而TableRow中添加,aspPanel添加(僅在設計頁面上創建面板)

現在我需要..當選中復選框時,我想使用JavaScript清除txtDynamic文本框

我嘗試了以下方法,但沒有起作用。

 chkDynamic.Attributes["onclick"] = "javascript:document.getElementById('" + txtDynamic.UniqueID + "').value='';";

我也嘗試用Method作為

 chkDynamic.Attributes.Add("onclick", "javascript:ClearText(this)");

但是在此方法中,以下一行給我的錯誤未找到“ txtDynamic” ..,因為控件是動態添加的。

 document.getElementById("<%= txtDynamic.ClientID %>").value="";

提前致謝....

經過大量調試后,我喜歡這個答案。 ASP.Net在運行時會做什么,它通過將父控件附加一些前綴來更改控件的ClientID,因此在我將所有表添加到創建的所有TR的末尾之前,我已經添加了解決此問題的方法面板顯示為plDynamicControls.Controls.Add(tblGeneralControls); 然后我添加了以下代碼,它就像魅力

chkDynamic.Attributes["onclick"] = string.Format("yearSuffixCHK(this, '{0}')", txtDynamic.ClientID);
txtDynamic.Attributes["onchange"] = string.Format("yearSuffixTXT(this, '{0}')", chkDynamic.ClientID);

執行此腳本時,是否已確保將文本框加載到DOM中?

我建議在服務器端的javascript變量中注冊控件的uniqueID / Client ID。

然后,在客戶端上,在加載整個DOM之后,在復選框上綁定click事件,然后執行清理文本框的相應工作

(您可以通過在頁面末尾編寫腳本或使用document.ready以確保使用jQuery來確保已加載DOM)

謝謝,
普拉納夫·考希克(Pranav Kauhik)
pranavkaushik.wordpress.com

您何時插入控件? 如果您在Page_Load中執行此操作,它將無法正常工作。 如果您尚未將控件插入Page_Init(或Page_PreInit),則建議您這樣做。

另外,請使用ClientID,而不要使用UniqueID,因為UniqueID可以包含冒號(:),這在HTML ID屬性中無效(並且在客戶端腳本的變量名中不允許使用)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM