Javascript 将aspx页面转换为WebUserControl
我在将ASPX页面转换为控制器(ASCX)时遇到问题。我的JavaScript没有在隐藏的div中找到文本框,也没有触发onclick事件。但是,它在ASPX页面中工作得非常好 我的JavaScript是Javascript 将aspx页面转换为WebUserControl,javascript,asp.net,webusercontrol,Javascript,Asp.net,Webusercontrol,我在将ASPX页面转换为控制器(ASCX)时遇到问题。我的JavaScript没有在隐藏的div中找到文本框,也没有触发onclick事件。但是,它在ASPX页面中工作得非常好 我的JavaScript是 function FireEditClickButton() { document.getElementById("btnFireEdit").click(); } 它应该与下一个按钮一起启动隐藏在一个div中的按钮) 每当checklistbox有值时调用 这两个错
function FireEditClickButton() {
document.getElementById("btnFireEdit").click();
}
它应该与下一个按钮一起启动隐藏在一个div中的按钮)
每当checklistbox有值时调用
这两个错误都表示它们为null,但它们就在这里的一个隐藏div中
<div style="visibility: hidden">
<asp:TextBox ID="tbRA" runat="server"></asp:TextBox>
<asp:Button ID="btnFireEdit" runat="server" OnClick="btnFireEdit_Click" />
</div>
既然它在ASPX页面中工作得很好,为什么会发生这种情况呢?这与WebUserControl不使用表单标记有关吗
感谢使用嵌套控件(或母版页中嵌套的页面)时,默认情况下,客户端上的ID将不同于服务器上的ID。ASP.NET默认情况下这样做是为了帮助确保客户端上的所有ID都是唯一的。但是,您可以使用以下两种方法之一来防止这种情况 第一个选项是将更改为静态。可以在控件、页面、web.config或machine.config级别执行此操作。web.config技术如下所示。然后,客户端上的ID将与服务器上的ID匹配
<configuration>
<system.web>
<pages clientIDMode="static" />
</system.Web>
</configuration>
然而,这是一个糟糕的想法。如果重命名
myctrlname
或btnfreedit
,则客户端代码将在运行时失败。编译时失败总是比运行时失败更好。您的javascript找不到按钮,因为在呈现的HTML中,它不再具有id=“btnfreedit”
,而是基于用户控件名称的id(例如id=“myctrlname\u btnfreedit”
)
你有两个选择。。。更新javascript以包含usercontrol的名称
document.getElementById("myctrlname_btnFireEdit").click();
document.getElementById("<%=btnFireEdit.ClientID%>").click();
谢谢你的建议、解释和帮助,不过freefaller还是先找到了;)欢迎您@Chris-祝您的项目顺利完成
<configuration>
<system.web>
<pages clientIDMode="static" />
</system.Web>
</configuration>
document.getElementById('<%= btnFireEdit.ClientId %>');
document.getElementById("myctrlname_btnFireEdit").click();
document.getElementById("myctrlname_btnFireEdit").click();
document.getElementById("<%=btnFireEdit.ClientID%>").click();
<asp:Button ID="btnFireEdit" runat="server" OnClick="btnFireEdit_Click"
ClientIDMode="Static" />