我在ASP.NET中创建了动态控件,如下所示。
首先我创建了复选框
CheckBox chkDynamic = new CheckBox();
然后
TextBox txtDynamic = new TextBox();
txtDynamic.ID = "txtDynamic";
这些控件添加在表格中添加的表格添加在表格中添加在aspPanel中(仅在设计页面创建的面板)
现在我需要..当选中复选框时我想用JavaScript清除txtDynamic文本框
我尝试了以下方法,但没有工作..
chkDynamic.Attributes["onclick"] = "javascript:document.getElementById('" + txtDynamic.UniqueID + "').value='';";
我也尝试将方法调用为
chkDynamic.Attributes.Add("onclick", "javascript:ClearText(this)");
但是在这个方法下面的行给我错误找不到“txtDynamic”..因为控件添加了动态。
document.getElementById("<%= txtDynamic.ClientID %>").value="";
提前致谢....
答案 0 :(得分:1)
经过大量调试后,我喜欢这个答案。什么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);
答案 1 :(得分:0)
在执行此脚本时,您是否确保已将文本框加载到DOM中?
我建议在服务器端的javascript变量中注册控件的uniqueID / Client id。
然后在整个DOM加载后在客户端绑定复选框上的click事件,然后执行清理文本框的相应工作
(您可以通过在页面末尾编写脚本或使用document.ready来确保DOM已加载,以防您使用jQuery)
谢谢,
Pranav Kauhik
pranavkaushik.wordpress.com
答案 2 :(得分:0)
您何时插入控件?如果你在Page_Load中执行它将无法正常工作。如果你还没有,我建议在Page_Init(或Page_PreInit)中插入控件。
此外,使用ClientID而不是UniqueID,因为UniqueID可以包含冒号字符(:),它在HTML ID属性中无效(并且在客户端脚本的变量名中不允许)。