Javascript 在动态添加的控件中按id查找元素
我有一个asp页面,其中动态添加了我创建的控件(多次)。在那个控件中,我有密码和用户名的文本框和一个恢复按钮 我在该控件中使用此javascript代码,但失败:Javascript 在动态添加的控件中按id查找元素,javascript,asp.net,getelementbyid,Javascript,Asp.net,Getelementbyid,我有一个asp页面,其中动态添加了我创建的控件(多次)。在那个控件中,我有密码和用户名的文本框和一个恢复按钮 我在该控件中使用此javascript代码,但失败: function HandlePasswordChanged() { document.getElementById("<%=btnRevert.ClientID %>").disabled = false; } function HandleUserChanged() { document.getElem
function HandlePasswordChanged() {
document.getElementById("<%=btnRevert.ClientID %>").disabled = false;
}
function HandleUserChanged() {
document.getElementById("<%=btnRevert.ClientID %>").disabled = false;
document.getElementById("<%=txtPassword.ClientID %>").disabled = false;
}
function btnRevertClick() {
document.getElementById("<%=btnRevert.ClientID %>").disabled = true;
document.getElementById("<%=txtPassword.ClientID %>").disabled = true;
document.getElementById("<%=txtUsername.ClientID %>").value = document.getElementById("<%=systemAccount.ClientID %>").value;
document.getElementById("<%=txtPassword.ClientID %>").value = "";
}
函数HandlePasswordChanged(){
document.getElementById(“”).disabled=false;
}
函数HandleUserChanged(){
document.getElementById(“”).disabled=false;
document.getElementById(“”).disabled=false;
}
函数btnRetrClick(){
document.getElementById(“”).disabled=true;
document.getElementById(“”).disabled=true;
document.getElementById(“”.value=document.getElementById(“”.value);
document.getElementById(“”.value=“”;
}
当我按下一个控件上的revert按钮时,它会禁用另一个控件上的textbox-getelement无法找到正确的控件
如何解决此问题?如果您正在使用.net 4.0:
您可以为动态添加的控件设置
clientdmode=“Static”
。此外,您必须确保为控件设置唯一的ID。我设法找到了解决方案
问题是,每次我用javascript代码添加acsx控件时,它都会添加多个同名函数,但内部不同。当一个控件想要调用其“自己的”函数时,它只使用第一个,因为它们的名称都相同
我的解决方案是从以下位置更改功能:
function HandleUserChanged() {
document.getElementById("<%=btnRevert.ClientID %>").disabled = false;
document.getElementById("<%=txtPassword.ClientID %>").disabled = false;
}
然后在c代码中我添加了以下内容:
txtUsername.Attributes.Add("onchange", "HandleUserChanged(\"" + btnRevert.ClientID + "\", \"" + txtPassword.ClientID + "\", \"" + cellPassword.ClientID + "\")");
这样,每个控件都可以准确地知道哪些控件属于自己,并向函数发送正确的参数 考虑发布呈现的HTMLH我添加的控件是我创建的一个acsx,其中有带有静态ID的文本框,因此当我添加多个此acsx时,里面的文本框没有唯一的ID。非常感谢!这让我发疯。
txtUsername.Attributes.Add("onchange", "HandleUserChanged(\"" + btnRevert.ClientID + "\", \"" + txtPassword.ClientID + "\", \"" + cellPassword.ClientID + "\")");