2013-01-22 106 views
1

對於一個需求,我需要在ASP.NET中觸發客戶端和服務器端按鈕的單擊事件。那可能嗎?我已經嘗試過如下。但它不會觸發客戶端點擊事件。如何觸發客戶端和服務器端按鈕的點擊事件?

[ASPX]

<asp:Button ID="Button1" runat="server" Text="Disable" OnClick="disable" CausesValidation="false" OnClientClick="return click();" /> 

[腳本]

function click() 
{ 
     alert("hi") 

    } 
+0

你的代碼似乎確定它應該工作。你能告訴你點擊按鈕後你的行爲嗎? –

+0

它引發服務器端單擊事件。但不是客戶端事件。 – RGR

+0

所有事件都是客戶端。沒有像服務器端事件那樣的事情。 ASP的語法只是使它看起來如此。其中一個原因,我避免了ASP。 –

回答

9

是的,這是可能的。如果客戶端Javascript返回true那麼服務器端方法將被調用。

例如:

function click() 
{ 
    return confirm("Do you want to continue?"); 
} 
+0

對於我來說,服務器端事件被調用時不會觸發客戶端事件。我困在那裏。 – RGR

+0

聽起來像一個Javascript錯誤,然後 - 檢查Javascript代碼是否有效。 –

+0

是的。錯誤是在我的代碼!我將客戶端事件指定爲'click();' 。這是我犯的錯誤。無論如何感謝您的幫助:)。我現在感覺很傻! – RGR

0
<asp:Button ID="Button1" runat="server" Text="Disable" OnClick="disable" CausesValidation="false" OnClientClick="click();" /> 

function click() 
{ 
    alert("hi"); 
    this.click(); 

} 
+0

'this.click()'不只是再次調用'OnClientClick'嗎?無論哪種方式,這不是應該如何做。 – webnoob

0

客戶端功能必須在你的代碼中調用。唯一的一點是取決於它返回服務器端函數將被調用:

function Click() { 
    alert('Hi'); 
    if (somecondition) { 
     return true; 
    } 
    return false; 
} 

另外,請檢查您的服務器端事件處理程序,如果你在代碼中提及「禁止」,它被命名爲正確的。我認爲這不是真正的名字。

還檢查你是否真的需要CausesValidation屬性?因爲這將用於您的驗證器,而這可能不再需要,因爲手動調用客戶端功能。

相關問題