javascript - 通过 javascript 单击按钮时,VB 代码不会触发

标签 javascript asp.net vb.net

我有一个向用户提供 TDF 文本文件的报告。在用户提交之前,将选择两个过滤器并填写两个字段,如果在没有这些过滤器的情况下单击“下载”按钮,则会出现一条友好的错误消息,要求用户在继续之前填写这些字段。我的测试部门希望在成功下载文件后该错误消失。响应对象会阻止页面回发,以便错误消息消失。

为了尝试解决此问题,我添加了一个额外的不可见按钮,该按钮连接到创建 TDF 的代码,并将 Javascript 单击事件附加到可见按钮。

 <asp:Button ID="btnSubmit" runat="server" Text="" Style="visibility:hidden;" /><asp:Button ID="btnDownload" runat="server" Text="Download TDF" OnClientClick="document.getElementById('ctl00_MainContent_btnSubmit').click();" />

我的问题是,由于我不知道的原因,当单击此隐藏按钮时,背后的代码不会触发。如果我向隐藏按钮发出警报,它会正常触发,告诉我该按钮正在被单击。该事件已在按钮的事件列表中注册,并且我已连接事件监听器:

 Protected Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click

我已经注释掉了与创建和下载 TDF 文件有关的所有内容,而是设置了一条虚拟错误消息来查看页面是否有反应,但事实并非如此。

为什么我的后台代码没有运行?

最佳答案

在我看来,单击 btnDownload 按钮时会同时触发两个回发,并且它们相互竞争:

  1. btnDownload本身引起的回发
  2. OnClientClick 中的 btnSubmit.click() 调用引起的回发

当我测试您的代码时,我得到了一些不可预测的结果:事件处理程序 btnSubmit_Click 有时被调用,有时不被调用。

如果您可以在客户端代码中检测到不再需要错误消息,则可以在回发发生之前直接在 OnClientClick 中清除它:

<asp:Button ID="btnDownload" runat="server" Text="Download TDF" OnClientClick="clearErrorMessage();" />

function clearErrorMessage() {
    if (/* All required fields are filled */) {
        // Clear the error message
    }
}

否则,您可能需要在代码隐藏的 btnDownload 事件处理程序中分两步响应:第一个响应将清除错误消息,并且可以添加启动客户端脚本来强制第二次回发。但这看起来不太好。

关于javascript - 通过 javascript 单击按钮时,VB 代码不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37334319/

相关文章:

asp.net - 如何连接到事件目录服务器?

c# - 异步的 session 状态意外行为

VB.net DataGridView 更改 Cell.FormattedValue

javascript - Angular2 queryParams 抛出 "does not exist on type"错误

Javascript 对象无法与 native javascript 方法(如 match()、替换等)一起使用

javascript - 如何使用 iron router 显示静态 html 文件

javascript - 未找到谷歌地图信息气泡和标记脚本 404

javascript - 如何使用 javascript 或 css 更改 select 标签中的选项宽度?

javascript - 关于... Z-索引?

.net - 在 VB .Net 中遍历集合(就像它是一个关联数组!)