在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/>
与按钮位于同一更新面板中。我已经尝试将它们移动到另一个更新面板,同样的结果。
同样,只有当用户在文本框中进行了更改并且在单击按钮之前没有关闭时,才会这样做。从盒子上跳下即可。我甚至把代码等了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?');
任何想法或体面的解决方法??
提前谢谢!
答案 0 :(得分:3)
这是在不编写函数的情况下解决问题的更好方法。
<asp:Button runat="server" ID="btnSubmit" Text="Submit" OnClick="BtnSubmit_Click"
OnClientClick="if (!confirm('Are you sure you want to Submit?')) return false;"/>
答案 1 :(得分:1)
想出了一个解决方法。
function ConfirmSubmit(){
if (confirm('Are you sure you want to submit?')){
__doPostBack(btnSend, '');
}
return false;
}
这是按钮:
<asp:Button id='btnSend' runat='server' onClientClick='return ConfirmSubmit();' />
答案 2 :(得分:0)
试
function DummyFunction()
{
var dt = new Date();
dt.setTime(dt.getTime() + 5000);
while (new Date().getTime() < dt.getTime());
return confirm('Are you sure you want to submit?');
}
更新onClientClick =“var result = DummyFunction()的代码;返回结果;”