javascript - 将 aspx 页面转换为 WebUserControl

标签 javascript asp.net webusercontrol

我在将 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/

相关文章:

javascript - 我如何从 vue-apollo 中访问 this.$route?

javascript - 嵌入 Flash 对象透明度问题

asp.net - 使用 session 包装器代替对 session 变量的直接调用

asp.net - 何时使用 gridview 以及何时在表行上使用转发器来显示表格数据?

c# - 更改用户控件 ID 中的 CSS

ubuntu - 无法以网络用户身份运行 oowriter

javascript - IOS 防止缩放文本输入

javascript - 获取 url 的级别路径

asp.net - 用于我的 ASP.NET 4.5 Web 应用程序的 MySQL 5.6 全文搜索与 ElasticSearch

c# - 加载动态创建的 ASCX 控件(通过代码)