簡體   English   中英

如何在 asp 按鈕上禁用回發 (System.Web.UI.WebControls.Button)

[英]How to disable postback on an asp Button (System.Web.UI.WebControls.Button)

我有一個asp按鈕。 它是服務器端的,所以我只能為登錄的用戶顯示它,但我希望它運行一個 javascript 函數,它似乎在 runat="server" 時總是調用回發事件。

我還有一個常規按鈕( <input... >)沒有在服務器上運行,它工作正常...

我怎樣才能讓這個按鈕只運行javascript而不是回發?

完成后讓您的 javascript 返回 false。

<asp:button runat="server".... OnClientClick="myfunction(); return false;" />
YourButton.Attributes.Add("onclick", "return false");

或者

<asp:button runat="server" ... OnClientClick="return false" />

您可以使用 jquery 單擊操作並使用preventDefault()函數來避免回發

<asp:button ID="btnMyButton" runat="server" Text="MyButton" />


$("#btnMyButton").click(function (e) {
// some actions here
 e.preventDefault();
}

考慮一下。

<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequest);
function BeginRequest(sender, e) {
    e.get_postBackElement().disabled = true;

}
     </script>

其他人是正確的,您需要回調返回 false; 但是我想補充一點,通過設置 onclick 是一種丑陋的舊做事方式。 我建議閱讀有關不顯眼的 javascript的內容。 使用像jQuery這樣的庫可以讓您的生活更輕松,並且 HTML 與您的 javascript 的耦合更少(並且 jQuery 現在得到 Microsoft 的支持!)

ASP.NET 總是生成asp:Button作為input type=submit
如果您想要一個不發布帖子的按鈕,但需要對服務器端的元素進行一些控制,請創建一個簡單的 HTML 輸入,其屬性type=buttonrunat=server

如果您禁用執行OnClientClick=return false的點擊操作,它不會在點擊時執行任何操作,除非您創建如下函數:

function btnClick() {
    // do stuff
    return false;
}

另外對於接受的答案,您可以使用 UseSubmitBehavior="false" MSDN

就我而言,我解決了在 onClientClick 中添加返回:

代碼背后

function verifyField(){
  if (document.getElementById("inputId").checked == "") {
    alert("Fill the field");
    return false;
  }
}

設計表面

<asp:Button runat="server" ID="send" Text="Send" onClientClick="return verifyField()" />

您沒有說您使用的是哪個版本的 .NET 框架。

如果您使用的是 v2.0 或更高版本,則可以在引發按鈕的 onclick 事件時使用 OnClientClick 屬性執行 Javascript 函數。

為了防止發生服務器回發,您所要做的就是從被調用的 JavaScript 函數中返回false

有驗證

在這個例子中,我使用了兩個控件, ddltxtbox ,有一個愉快的編碼

 asp:ScriptManager ID="script1" runat="server" /asp:ScriptManager

    asp:UpdatePanel ID="Panel1" runat="server"
       ContentTemplate

// ASP BUTTON
asp:Button ID="btnSave" runat="server" Text="Save" class="btn btn-success" OnClientClick="return Valid()" OnClick="btnSave_Click"


   /ContentTemplate    
    /asp:UpdatePanel    

  <script type="text/javascript">
        function Valid() {

            if ($("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").val() == 0) {
                alert("Please select YOUR TEXT");
                $("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").focus();
                return false;
            }

            if ($("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").val().length == 0) {
                alert("Please Type YOUR TEXT");
                $("ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").focus();
                return false;
            }
            return true;
        }
</script>

您可以使用以下代碼:

 <asp:Button ID="Button2" runat="server" Text="Pulsa" OnClientClick="this.disabled=true" UseSubmitBehavior="False"/>

如果需要提交

 ... <form id="form1" runat="server" onsubmit="deshabilita()"> ... <script type="text/javascript"> function deshabilita() { var btn = "<%= Button1.ClientID %>"; if (confirm("Confirme postback")) { document.getElementById(btn).disabled = true; return true; } return false; } </script>

您可以為此使用 JQuery

<asp:Button runat="server" ID="btnID" />

比在 JQuery 中

$("#btnID").click(function(e){e.preventDefault();})

你只需要從

 function jsFunction() { try { // Logic goes here return false; // true for postback and false for not postback } catch (e) { alert(e.message); return false; } }
 <asp:button runat="server" id="btnSubmit" OnClientClick="return jsFunction()" />

JavaScript 函數如下所示。

注意* :始終使用 try-catch 塊並從 catch 塊返回 false 以防止 javaScript 函數中的錯誤計算。

暫無
暫無

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

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