2012-03-08 55 views
9

使用此代碼,我嘗試關閉一個窗口(我這樣做的工作方式),但是我也有一個忽略的Onclick事件!當我使用Onclick和OnClientClick時,OnClick不起作用

<script type="text/javascript"> 


      function GetRadWindow() { 
       var oWindow = null; 
       if (window.radWindow) oWindow = window.radWindow; 
       else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow; 
       return oWindow; 
      } 

      function CloseDialog() { 
       GetRadWindow().close(); 

      } 

ASPX頁面:

<asp:Button ID="Button1" runat="server" Text="Soumettre ce ticket" 
       onclick="Button1_Click" OnClientClick="CloseDialog();return false;"/> 

我的應用程序將不會進入button1_Click事件,任何人都可以幫我找出原因? 由於事先

編輯:HTML生成按鈕

<input type="submit" id="Button1" onclick="CloseDialog();" value="Soumettre ce ticket" name="Button1"/> 
+2

嘗試刪除返回FALSE;從你的onClientClick。這可能會抑制onclick事件。 – dash 2012-03-08 14:44:34

+0

你能告訴我們實際交付給客戶的是什麼嗎? – greg84 2012-03-08 14:45:32

+0

您是否可以使用爲'Button1'生成的實際HTML更新您的問題? – shanabus 2012-03-08 14:45:38

回答

13

This article種解釋問題。如果您希望觸發服務器事件,則需要在JS中返回true。否則,你必須返回false。

而且,它也像你將不得不添加UseSubmitBehavior = FALSE基於:OnclientClick and OnClick is not working at the same time?

這是看你生成的HTML不僅具有CloseDialog(),而不是調用的button1_Click後尤爲明顯。此更改將連接到onclick的末尾。

<asp:Button ID="Button1" runat="server" Text="Soumettre ce ticket" 
      onclick="Button1_Click" OnClientClick="CloseDialog();" 
      UseSubmitBehavior="false"/> 
+0

我剛剛刪除了返回false;在Onclient點擊和CloseDialog()函數中添加返回true,但它不幸的是沒有工作 – Slrg 2012-03-08 14:57:06

+0

更新我的答案。這似乎已經得到解答。 – 2012-03-08 15:28:01

+0

它的工作原理!非常感謝你的幫助! – Slrg 2012-03-08 15:34:47

4

您在onclientclick返回false,所以回傳之前返回事件。因此,onclick永遠不會引發火災。

+0

+1這就是鮑勃!返回false將阻止呈現的提交按鈕發佈ASP.NET表單。 – greg84 2012-03-08 14:46:37

+0

請解釋downvote?這是正確的答案。 – Evert 2012-03-08 14:47:14

+0

同意你的答案 - 我評論你同時發佈你的答案,所以從我的+1應該反擊隨機downvote :-) – dash 2012-03-08 14:48:13

6

我遇到了這個問題,並使用UseSubmitBehavior="false"幾乎沒有伎倆。請確保您的OnClientClick呼叫設置正確:

我的代碼使用的是OnClientClick="return ValidateSearch();",這是不正確的。它應該只是

<asp:Button ID="keywordSearch" runat="server" Text="Search" TabIndex="1" 
OnClick="keywordSearch_Click" OnClientClick="if (!ValidateSearch()) { return false;};" /> 

看到這裏的Source(並告訴他們的感謝!)

如果設置不當,OnClick功能將不會觸發。

0

我剛剛遇到同樣的問題,我認爲我們在服務器端enable="false"和客戶端「禁用」之間感到困惑。

的服務器端屬性啓用使用control.Enabled = "false";一樣施加Attribute控制,像control.Attribute.Add("disabled","disabled");

如果應用從服務器端的Enabled = false;,你實際上完全關閉控制,即使它顯示在屏幕上!繼續,嘗試右鍵單擊控件並選擇InspectorFireFly以查看它。什麼都沒有出現。沒有任何反應,因爲控制不「存在」。

然而,如果您應用Attribute屬性,則該控件對服務器和客戶端可見,並且您可以檢查它。

我所做的是在ASP上設置默認環境。說(在我的情況asp:Button)控制網側,有Enabled="true"(或者什麼也不說,因爲這是默認反正)。

在服務器端,在PageLoad(),我讓我的按鈕可見(在我的情況我也有它默認爲visible="false"),並添加適當的Attribute值。

btnSEND.Visible = true; 
btnSEND.Attributes.Add("disabled", "disabled"); 

這樣未啓用按鈕,但它並不完全是「看不見」的客戶端,並在我的程序的其他區域使用JavaScript,我控制時啓用與否。

該方法也避免了必須使用UseSubmitBehavior="false"

0

在Page_Load中,你通過使用Add.Atribute方法,返回真正的Java腳本功能。首先它會加載javascript函數。那麼它會載入按鈕點擊事件