javascript - 禁用按钮不会在 UpdatePanel 中提交回发

标签 javascript c# asp.net button updatepanel

我的 ASP.NET 页面上的 UpdatePanel 中有一个按钮。这是我的 UpdatePanel

<asp:UpdatePanel ID="UpdateToolbar" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <table>
            <tr>
                <td>
                    <div id="divPDFBtn">
                        <asp:Button ID="btnPrint" runat="server" OnClick="btnPrint_Click" ToolTip="Click to export report to PDF"
                        Width="100px" Text="Print to PDF" OnClientClick="if(PDFClick()) {return true;} else {alert('2');}" />
                    </div>
                </td>
            </tr>
        </table>
    </ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID="btnPrint" />
    </Triggers>
</asp:UpdatePanel>

当我尝试禁用按钮 OnClientClick 时,它不会执行 PostBack

这是我的 PDFClick() 函数的示例

// Works (does post back and code behind executes))
<script type="text/javascript">
    function PDFClick() {
        document.getElementById("btnPrint").value = "Working...";
        return true;
    };
</script>

// Doesn't work (JS executes, but code behind didn't execute)
<script type="text/javascript">
    function PDFClick() {
        document.getElementById("btnPrint").value = "Working...";
        document.getElementById("btnPrint").disabled = true;
        return true;
    };
</script>

这是我的代码。我需要在后面做一些事情并在完成后打开新窗口:

protected void btnPrint_Click(object sender, EventArgs e)
{
    Response.Write("<script>");
    Response.Write(String.Format("window.open('{0}','_blank')", ResolveUrl("PrintPage.aspx")));
    Response.Write("</script>");
}

请告诉我如何禁用我的按钮并访问后面的代码。

最佳答案

您可以使用 setTimeout 异步禁用该按钮:

<script type="text/javascript">
    function PDFClick(btnPrint) {
        btnPrint.value = "Working...";
        setTimeout(function() { btnPrint.disabled = true; }, 10);
        return true;
    };
</script>

调用document.getElementById可以从 PDFClick 中删除通过使用 this 传递对按钮元素的引用OnClientClick中的关键字:

OnClientClick="if (PDFClick(this)) { return true; } else { alert('2'); }"

关于javascript - 禁用按钮不会在 UpdatePanel 中提交回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37955604/

相关文章:

c# - 使用 LINQ to SQL 的 Web 应用程序中非常慢的问题

javascript - if IE >= 9 或 not IE 的条件指令

javascript - 删除前在 href 链接上确认

javascript - 让用户在网页上创建更多元素

javascript变量显示它之前的值

c# - 如何在 VSTS 中调试 ashx 文件?

c# - Windows 服务启动和 Exe

c# - 以下 C# 代码的作用是什么?

c# - asp.net将匿名函数参数转换为字符串

asp.net - ASP GridView 未绑定(bind)到选择结果