簡體   English   中英

單擊按鈕禁用回發

[英]Disable postback at click on a button

我想在單擊<asp:Button>后禁用回發。 我試圖通過分配onclick="return false"來做到這一點,但在按鈕中不起作用。

我怎樣才能解決這個問題?

onClientClick="return false"

應該這樣做! Onclick將引用 ASP.net 函數, onClientClick將在 HTML 控件上呈現為OnClick

它對我來說是這樣的:

<body>

function myfunction() {
            return false;
        }

並在<head>

<asp:ImageButton ID="ImageButton1" runat="server" Height="52px" Width="58px" OnClientClick="myfunction(); return false;"/>

onclick用於連接您的服務器端事件。 您需要使用OnClientClick處理程序,例如<asp:button OnClientClick="return false;" /> <asp:button OnClientClick="return false;" />

用這個:-

  someID.Attributes.Add("onClick", "return false;");

我可以使用包含相關控件/元素的 UpdatePanel 來解決這個問題。

看到這些答案都沒有幫助我。 我找到了解決方案。 您應該使用 HTML 按鈕而不是使用 ASP.NET 按鈕<asp:Button> 它運行良好,看起來與 ASP.NET 按鈕完全一樣。 要在服務器端提交 HTML 按鈕,您可以使用屬性onserverclick

<input id="btnState" class="AddButtons" runat="server" type="button" value="Add State" onclick="swap('one', 'two');" />

對於我的代碼,我使用 JS 在服務器端做一些事情。 <asp:Button>不會停止回發,但正如我所說,HTML 按鈕解決了我的問題。 如果這對您有幫助,請標記為答案或投票。

把你的 asp 按鈕放在 Updatepanel 里面,比如

<asp:UpdatePanel ID="updPnl" runat="server" UpdateMode="Conditional" RenderMode="Block">
  <ContentTemplate>
    <asp:Button ID="btnID" runat="server"  OnClick="btn_Click" />
  </ContentTemplate>
</asp:UpdatePanel>

就我而言,上述解決方案都不適合我。

我想要的是首先在客戶端調用一個函數,然后停止回發到服務器。 我的解決方案是在調用我的客戶端函數之前簡單地添加return關鍵字,即:

<asp:Button Runat=Server OnClientClick="return fyFunction;">

我的客戶端腳本在最后一行代碼中包含return false

通過使用 UseSubmitBehavior="false" 您可以禁用 onclick 的回發

既然您想在回發后執行此操作,我想您想防止雙擊回發? 在這種情況下,您最好擁有在客戶端第一次單擊后設置的某種狀態維護變量。 作為一個簡單的例子

var clicked = false;
function AllowOneClick(){
   if(!clicked){
      clicked = true;
      return true;
    }
 return false;
 }

然后,您將 OnClientClick 設置為在您的按鈕上返回此方法結果,因此OnclientClick="return AllowOneClick()"這當然僅適用於一個按鈕,但它應該為您提供總體思路。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM