gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:54:34 24 4
gpt4 key购买 nike

我有一个向用户提供 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com