2008-10-07 48 views
51

我的窗體上有一個ASP.NET linkbutton控件。我想在客戶端使用它的JavaScript,並防止它回發到服務器。 (我想使用linkbutton控件,所以我可以在某些情況下將其隱藏並禁用它,因此不宜使用直線標記)。禁用<ASP:LinkBut​​ton>上的回發

如何防止它回發到服務器?

回答

57

ASPX代碼:

<asp:LinkButton ID="someID" runat="server" Text="clicky"></asp:LinkButton> 

後面的代碼:

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     someID.Attributes.Add("onClick", "return false;"); 
    } 
} 

什麼呈現爲HTML是:

<a onclick="return false;" id="someID" href="javascript:__doPostBack('someID','')">clicky</a> 

在這種情況下,發生的事情是的onclick功能,成爲您的驗證。如果它是假的,則不執行「href」鏈接;然而,如果這是真的,href將被執行。這消除了你的回帖。

+1

``並添加上面的點擊沒有任何反應:/ – SearchForKnowledge 2015-04-08 18:21:36

3

在C#中,你會做這樣的事情:

MyButton.Attributes.Add("onclick", "put your javascript here including... return false;"); 
0

您也可能希望有客戶端功能返回false。

<asp:LinkButton runat="server" id="button" Text="Click Me" OnClick="myfunction();return false;" AutoPostBack="false" /> 

您也可以考慮:

<span runat="server" id="clickableSpan" onclick="myfunction();" class="clickable">Click Me</span> 

我使用點擊類設置之類的東西指針,顏色等,以便其外觀類似於一個錨標記,但我不不得不擔心它得到張貼回來或不得不做的href =「javascript:void(0);」招。

+1

的OnClick結合服務器邊事件,而不是客戶端事件。 onclientclick是客戶端事件 – 2008-10-07 02:21:34

34

這可能聽起來像一個無益的答案......但爲什麼你使用LinkBut​​ton的純粹客戶端的東西?使用標準的HTML定位標記並將其onclick操作設置爲您的Javascript。

如果您需要服務器生成該鏈接的文本,則使用asp:Label作爲錨點的開始和結束標記之間的內容。

如果您需要根據服務器端代碼動態更改腳本行爲,請考慮使用asp:Literal作爲技術。

但是,除非你正在從LinkBut​​ton的Click事件處理服務器端活動,否則在這裏使用它似乎沒有多少意義。

+0

我同意。首先,我想使用我已經創建的用於其他地方的鏈接按鈕的皮膚。 – y0mbo 2008-10-07 02:32:58

+0

您是否可以不修改皮膚,或將給定錨的樣式基於皮膚中使用的樣式? – 2008-10-07 10:58:02

5

我認爲你應該使用HyperLink控件進行調查。這是一個服務器端控件(因此您可以操縱代碼中的可見性等),但是它省略了常規的ol標籤並且不會導致回發。

0

似乎沒有人會做這樣的:

createEventLinkButton.Attributes.Add("onClick", " if (this.innerHTML == 'Please Wait') { return false; } else { this.innerHTML='Please Wait'; }"); 

這似乎是唯一可行的辦法。

0

爲什麼不使用空的ajax更新面板並將linkbutton的click事件連接到它?這種方式僅更新面板將得到更新,從而避免了回傳,並允許您在onclick事件運行你的JavaScript

1

調用Java腳本函數。

0

而不是實現屬性:

public partial class _Default : System.Web.UI.Page{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
    someID.Attributes.Add("onClick", "return false;"); 
}} 

用途:

OnClientClick="return false;" 

ASP內部:LinkBut​​ton的標籤

-1

使用HTML鏈接,而不是asp的鏈接,你可以在兩者之間使用標籤html鏈接服務器端 控制

23

您可以做到這一點

...LinkButton ID="BtnForgotPassword" runat="server" OnClientClick="ChangeText('1');return false"...

它停止鏈接按鈕回傳

1

您是否嘗試過使用OnClientClick

var myLinkButton = new LinkButton { Text = "Click Here", OnClientClick = "JavaScript: return false;" }; 

<asp:LinkButton ID="someID" runat="server" Text="clicky" OnClientClick="JavaScript: return false;"></asp:LinkButton> 
12

剛剛成立的href = 「#」

<asp:LinkButton ID="myLink" runat="server" href="#">Click Me</asp:LinkButton> 
1

通過這個幾分鐘前剛去過,做正確的方法是使用

  1. OnClientClick
  2. Return False()

如下面的代碼示例行:

<asp:LinkButton ID="lbtnNext" runat="server" OnClientClick="findAllOccurences(); return false();" Visible="false"/> 

只是複製從我的工作該行代碼。

0

別的東西,你可以做,如果你要保留滾動位置是這樣的:

<asp:LinkButton runat="server" id="someId" href="javascript: void;" Text="Click Me" /> 
0

在jQuery的準備功能,你可以這樣做如下 -

var hrefcode = $('a[id*=linkbutton]').attr('href').split(':'); 
var onclickcode = "javascript: if`(Condition()) {" + hrefcode[1] + ";}"; 
$('a[id*=linkbutton]').attr('href', onclickcode);