Javascript'确认()'取消回发

时间:2011-12-21 15:58:31

标签: javascript asp.net ajax asynchronous

在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?');

任何想法或体面的解决方法??

提前谢谢!

3 个答案:

答案 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()的代码;返回结果;”