2011-07-29 129 views
0

我只有一個按鈕,並提到當用戶在jQuery的幫助下點擊按鈕時該怎麼做。但是當我點擊那麼沒有發生只有回發發生。我不想要回傳。與jquery相關的問題

這裏是我的代碼:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="BBAWeb.WebForm1" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
     <script src="Scripts/jquery-1.6.2.min.js" type="text/javascript"/> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $('#btn').click(showMessage); 
      return false; 
     }); 

     function showMessage() { 
      $('#message').fadeIn('slow').html("Hello"); 
     } 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:Button ID="btn" runat="server" Text="Click Me" /> 
     <div id="message">welcome to kolkata</div> 
    </div> 
    </form> 
</body> 
</html> 

請看看我的代碼,並告訴我什麼是錯的。我想提一個建議。

+0

你肯定asp的按鈕控件,當它運行客戶端這個ID?我不知道這一點,但我想我記得控制ID是完全獨立於HTML ID –

回答

2

首先,當按鈕最終顯示在頁面上時,asp.net會將按鈕ID更改爲更獨特,以便更好地管理所有內容。

所以你的jQuery $(「btn」)將無法找到任何東西。

代替,只是增加一類,說: 「myBtn」 你的按鈕,這樣做:

<asp:Button ID="btn" runat="server" Text="Click Me" CssClass="myBtn" /> 

和JS:

<script> 
$(".myBtn").click(function(event) { 
    event.preventDefault(); 
    showMessage(); 
}); 
</script> 

這應該工作。

1

return false應該是點擊事件處理中,但最好是使用e.preventDefault()

$(document).ready(function() { 
    $('#<%= btn.ClientId%>').click(showMessage); 
}); 

function showMessage(e) { 
    e.preventDefault(); 
    $('#message').fadeIn('slow').html("Hello"); 
} 
1

更改按鈕選擇這樣:

$('#<%= btn.ClientId%>').click(showMessage); 

並移動將返回false進入showMessage函數。

0

當你這樣做$('#btn').click(showMessage); jQuery試圖找到ID爲「btn」的按鈕,但是因爲你有一個服務器控件的asp.net按鈕,它的ID不是呈現爲「btn」,而是ASP.NET增加了一堆字符串以避免重複的ID。

所以,爲了讓jQuery來能夠找到你的按鈕,改變你的腳本:

$('#<%= btn.ClientID %>').click(showMessage); 
0

有幾個方法可以做到你想要做什麼,和一對夫婦您的代碼無法正常工作的原因。

首先,如果您想防止在ASP.NET Button控件上回發,您應該爲其提供一個客戶端OnClick處理程序,該處理程序返回false。您可以使用JavaScript設置處理程序(如您所做的那樣),也可以在服務器端設置控件的OnClientClick屬性。其次,如果您使用JavaScript設置處理程序,則需要使用Button的正確客戶端ID。 Button的客戶端ID不一定是您鍵入到Button的ID屬性中的。在此代碼:

<asp:Button ID="btn" runat="server" Text="Click Me" /> 

的ID 「BTN」只是服務器端 ID,其可以在C#代碼中使用。 客戶端 ID將被重寫爲諸如「ctl00 $ MainContent $ btn」之類的內容,所以這就是您的JavaScript所需要的內容。您可以通過使用<%= btn.ClientID %>訪問它,正如其他人指出:

$('#<%= btn.ClientID %>').click(showMessage); 

如果你使用.NET 4.0中,你還可以設置按鈕的屬性ClientIDMode="Static",然後btn都將在服務器上使用邊或客戶端。

<asp:Button ID="btn" runat="server" Text="Click Me" ClientIDMode="Static" /> 

所以,總結一下:你showMessage功能應該是這樣的:

function showMessage() { 
     $('#message').fadeIn('slow').html("Hello"); 
     return false; 
    } 

和你的其他代碼應該像這些之一:

1.

$(document).ready(function() { 
     $('#btn').click(showMessage); 
     return false; 
    }); 
... 
<asp:Button ID="btn" runat="server" Text="Click Me" ClientIDMode="Static" /> 

2.

$(document).ready(function() { 
     $('#<%= btn.ClientID %>').click(showMessage); 
     return false; 
    }); 
... 
<asp:Button ID="btn" runat="server" Text="Click Me" /> 

3.

//no $(document).ready needed 
... 
<asp:Button ID="btn" runat="server" Text="Click Me" OnClientClick="return showMessage()" /> 
+0

沒有必要在$(document).ready() – Corneliu

+0

@Corneliu返回false - 我知道,但OP有它在他的代碼中,所以我把它放在了裏面。我在$(document).ready()中修改的唯一東西就是'<%= btn.ClientID%>'。 –