You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击确认后禁用按钮的JS问题:return未触发C#后端执行

ASP.NET按钮确认提交后无法触发后端代码问题解决

需求

  • 点击提交按钮时弹出确认对话框,确认用户是否提交表单
  • 用户选择“确认”时,禁用按钮并将文本改为Please Wait,直到后端C#代码执行完成
  • 仅在用户确认提交时,才执行后端C#逻辑

现有代码

JavaScript 确认函数

function confirmSubmit(element) {
    if (confirm('Are you Sure?')) {
        element.disabled = true;
        element.value = 'please wait ...';           
        return true;       
    } else {
        return false;
    }  
}

ASP.NET 按钮控件

<asp:Button runat="server" ID="btn_Submit" Text="Submit Time Sheet" 
    CssClass="btn mybtn confirmbtn" Width="100%" 
    OnClick="btn_Submit_Click" OnClientClick="return confirmSubmit(this);" 
    UseSubmitBehavior="false" />

问题

按钮禁用功能正常,但return true无法触发后端的btn_Submit_Click事件,后端代码不执行。

解决方案

核心原因

当在return true前立即禁用按钮时,浏览器会中断后续的表单提交流程(尤其UseSubmitBehavior="false"时,ASP.NET依赖客户端__doPostBack函数触发回发,按钮禁用会阻止该函数执行)。

修改后的JavaScript代码

通过setTimeout延迟10毫秒禁用按钮,确保表单提交事件已被触发后再修改按钮状态:

function confirmSubmit(element) {
    if (confirm('Are you Sure?')) {
        // 延迟禁用按钮,确保提交流程已启动
        setTimeout(function() {
            element.disabled = true;
            element.value = 'please wait ...';
        }, 10);
        return true;
    } else {
        return false;
    }
}

额外验证

  • 确保页面无其他JavaScript错误阻止回发流程
  • 确认btn_Submit_Click后端方法已正确实现且无逻辑错误
  • UseSubmitBehavior="false"配置正确(若需自定义客户端行为,该设置是必要的)

内容的提问来源于stack exchange,提问作者Alina Anjum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 14:52:48