我在将 ASPX 页面转换为 Controller (ASCX) 时遇到问题。我的 JavaScript 没有在隐藏的 div 中找到文本框,也没有触发 onclick 事件。但是它在 ASPX 页面中工作得很好。
我的 JavaScript 是..
function FireEditClickButton() {
document.getElementById("btnFireEdit").click();
}
它应该触发隐藏 div 中的这个按钮以及下一个部分)
<asp:Button ID="btnFireEdit" runat="server" OnClick="btnFireEdit_Click" />
然后使用这个 JavaScript
function GetSelection() {
var c = document.getElementById("tbRA");
c.innerText = checkListBox.GetSelectedValues();
UpdateText();
}
每当复选框有值时被调用。
两个错误都说它们是空的,但它们就在隐藏的 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 有关吗?
谢谢
最佳答案
您的 javascript 找不到按钮,因为在呈现的 HTML 中它不再有 id="btnFireEdit"
而是基于用户控件名称的 ID(例如 id="myctrlname_btnFireEdit"
)。
您有两个选择...要么更新 javascript 以包含用户控件的名称...
document.getElementById("myctrlname_btnFireEdit").click();
document.getElementById("<%=btnFireEdit.ClientID%>").click();
(请注意,这两行中的第二行仅在 javascript 是用户控件本身的一部分时才有效。如果 javascript 在外部 .js
文件或父页面中则无效)
或者使用 ClientIDMode
<asp:Button>
的属性并将值设置为 Static
.这将使呈现的 HTML 使用 id="btnFireEdit"
...
<asp:Button ID="btnFireEdit" runat="server" OnClick="btnFireEdit_Click"
ClientIDMode="Static" />
关于javascript - 将 aspx 页面转换为 WebUserControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28156744/