点击确认后禁用按钮的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
相关产品推荐
相关产品推荐

