在asp.net 3.5页面上,我有多个文本框,当用户浏览表单时,它们会在TextChanged事件上触发异步回发。用户完成表单后,按下“提交”按钮以提交包含javascript“确认”对话框的表单。只要用户已关闭所有字段的标签,一切都可以正常工作。但是,如果用户更改文本框之一的值并单击不带退出文本框的按钮,则会触发“onClientClick”,但是如果有“确认”字样,则该页面不会回发:
onClientClick = return confirm('Are you sure you want to submit?'); //Page Does Not Post
但是,删除页面上的确认会回发:
onClientClick = return true; //Page Posts
该按钮是
<asp:PostBackTrigger/>
。文本框的<asp:AsyncPostBackTrigger/>
与按钮位于同一更新面板中。我尝试过将它们移动到另一个具有相同结果的updatepanel中。同样,仅当用户在文本框中进行了更改且在单击按钮之前未将其制表符关闭时,才可以这样做。跳开框就可以了。我什至将代码等待5秒钟,然后显示确认,然后提交表单,但结果相同(除了必须等待5秒钟才能确认):
var dt = new Date();
dt.setTime(dt.getTime() + 5000);
while (new Date().getTime() < dt.getTime());
return confirm('Are you sure you want to submit?');
任何想法或体面的解决方法?
先感谢您!
最佳答案
这是无需编写函数即可解决问题的更好方法。
<asp:Button runat="server" ID="btnSubmit" Text="Submit" OnClick="BtnSubmit_Click"
OnClientClick="if (!confirm('Are you sure you want to Submit?')) return false;"/>