2011-12-21 40 views
3

在asp.net 3.5页面上,我有多个文本框,在用户通过表单前进时触发TextChanged事件的异步回传。用户完成表单后,按下“提交”按钮提交包含javascript“确认”对话框的表单。只要用户已关闭所有字段,一切正常。但是,如果用户改变文本框的一个值并按下按钮W/O退出文本框时,“的OnClientClick”火灾,但如果有一个“确认” specificed的页面不回传:Javascript'confirm()'取消回发

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

你把你的brakpoint放在哪里?在Page_Load或TextChanged中? – 2011-12-21 16:02:57

+0

无论确认()结果如何,您是否想要点击回发? – 2011-12-21 16:07:18

+0

@ARS我想他只想要一个回传是..或'确认'永远不会工作 – 2011-12-21 16:14:09

回答

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结果= DummyFunction();返回结果;”

+0

谢谢你,但是没有。同样的结果。无论我把确认放在哪里,它都会取消按钮提交。只有当按钮被点击而没有关闭改变文本框 – BFK 2011-12-21 17:59:58

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();' /> 
+0

我有这个问题很多年了,我反对这个想法,因为我不喜欢手动回发,但是对于我的情况,这个问题已经解决了,我存储了确认结果变成一个变种。然后根据这个变种做些东西。但它永远不会返回到服务器。不管我尝试了什么。添加一个__doPostBack虽然解决了它。所以这是我的书中的一个胜利。 – Sam 2016-12-12 15:07:30

3

这是解决您的问题,甚至没有写一个函数的更好的方式。

<asp:Button runat="server" ID="btnSubmit" Text="Submit" OnClick="BtnSubmit_Click" 
    OnClientClick="if (!confirm('Are you sure you want to Submit?')) return false;"/>