2012-06-15 24 views
0

這是一個回發問題(我不想用客戶端來解決這個問題,必須有辦法阻止postBack然後使用客戶端),我有點擊按鈕時,它會從後面的代碼中調用一個javascript函數,但在它執行此操作之前會將其返回頁面,問題是:如何跳過後臺步驟並跳轉到javascript部分?阻止帖子返回vb和javascript

<script type="text/javascript"> 
    function hello(name) { 
     alert("hello world from javascript " + name) 
     return false; 
    } 
</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
    <asp:Button ID="Button1" runat="server" Text="Button" /> 
</div> 
</form> 

代碼背後:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click 
    Dim Myname As String = "myName" 
    Dim cstype As Type = Me.GetType() 
    Page.ClientScript.RegisterStartupScript(cstype, "MyKey", "hello('" & Myname & "');", True) 

End Sub 

回答

3

使用客戶端處理程序而不是服務器端處理程序。刪除Button1_Click並將您的js電話添加爲OnClientClick屬性值。

<asp:Button ID="Button1" runat="server" Text="Button" 
      OnClientClick="return hello('myName');" /> 

或者,不使用在所有的服務器控制:

<button id="button1" onclick="return hello('myName');">Button</button> 
+0

您需要返回hello('myName')'以禁用頁面回發。 – lkaradashkov

+0

是的,謝謝。自從我寫了令人反感的JavaScript以來已經有一段時間了。 – jrummell

1
  1. 你應該按鈕點擊事件之前登記在Page_Load中或方法這個腳本。

    Button1.Attributes.Add(「onclick」,「return hello()」); hello方法的,你在代碼註冊腳本的背後是這樣

    Page.ClientScript.RegisterStartupScript(cstype 「的myKey」 呼叫之前, 「返回你好('」 &的Myname &「'

  2. 使用收益) ;「,True)

  3. 如果不想回發,請從Button1_Click中刪除所有語句。或取消綁定服務器端單擊事件

    保護小組的button1_Click(BYVAL發件人爲對象,BYVALË作爲EventArgs的)把手Button1.Click

末次

+0

謝謝..我試過這個,它不起作用,還有其他想法? –

+0

您在錯誤的地方註冊了hello方法。在頁面加載中添加這段代碼,正如我在我的答案中提到的那樣,它應該可以工作 – Adil

1

爲什麼不使用HTML按鈕,而不是一個ASP按鈕

<input id="Button1" type="button" value="button" runat="server" /> 

和服務器端寫入類似

Button1.Attributes.Add("onclick","hello()"); 
1

我認爲你在尋找使用OnClientClick事件的按鈕:

<asp:Button ID="Button1" OnClientClick="return hello('world')" runat="server" Text="Button" />