2010-06-03 39 views
0

我有一个ASP.NET复选框,我想在回发之前运行一些JavaScript。Javascript禁用我的回发

喜欢的东西:

<asp:CheckBox ID="chkSelected" runat="server" AutoPostBack="True" OnCheckedChanged="chkSelected_CheckedChanged" /> 

但我想运行一个JS确认对话框当用户点击它,如果他们被取消选中它,我想问问他们,如果他们是肯定的,并如果是这样,回发并运行我的服务器端代码。如果他们说不,不要回传。

任何人都知道一个'简单'的方法来做到这一点?

回答

2

您可以添加onclick处理程序:

​​

(我相信这会工作,但我没有尝试)

您也可以在Javascript中添加事件。 (这是比较容易的工作)
使用jQuery:

$('#<%=chkSelected.ClientID%>').click(function() { 
    return this.checked || confirm('Are you sure?'); 
}); 
+0

但是这不会导致它回发吗?我需要它不做任何事情,如果他们点击否,并且如果他们单击是,它应该导致回发并运行我的serverside'已更改'事件。我认为这需要在onclick方法中使用'__doPostBack()'方法。 – LoveMeSomeCode 2010-06-07 12:17:44

+0

如果处理程序返回true,它应该从内联处理程序中回发。尝试一下。 – SLaks 2010-06-07 13:26:04

+0

是的,它做到了!我有点困惑,为什么...... 你的JS:if(!this.checked &&!confirm('Are you sure?'))return false;如果他们点击是,将导致回发,如果他们点击了没有回发。 My JS:return confirm('Are you sure?');不管你选择什么,都不会导致回发。 这是为什么? 谢谢你的方式! – LoveMeSomeCode 2010-06-07 15:21:49

0

我还没有一个复选框试过,但尝试看看是否有适合您的ASP属性的OnClientClick:复选框。如果有,请将JavaScript函数的名称放入其中。然后在您的javascript中,您可以return true如果回发应该发生或return false如果您要取消回发。

+0

遗憾的是没有。这只适用于按钮,LinkBut​​tons,ImageButtons等。这太糟糕了,因为它的工作原理与我想要的完全相同...... – LoveMeSomeCode 2010-06-04 12:39:15

+0

我想到的另一个选择是SLak发布的JQuery代码。 – ZippyV 2010-06-04 13:52:43