Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在动态添加的控件中按id查找元素_Javascript_Asp.net_Getelementbyid - Fatal编程技术网

Javascript 在动态添加的控件中按id查找元素

Javascript 在动态添加的控件中按id查找元素,javascript,asp.net,getelementbyid,Javascript,Asp.net,Getelementbyid,我有一个asp页面,其中动态添加了我创建的控件(多次)。在那个控件中,我有密码和用户名的文本框和一个恢复按钮 我在该控件中使用此javascript代码,但失败: function HandlePasswordChanged() { document.getElementById("<%=btnRevert.ClientID %>").disabled = false; } function HandleUserChanged() { document.getElem

我有一个asp页面,其中动态添加了我创建的控件(多次)。在那个控件中,我有密码和用户名的文本框和一个恢复按钮

我在该控件中使用此javascript代码,但失败:

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 + "\")");