2010-06-03 47 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