Как отключить postback на кнопке asp

У меня есть кнопка asp. Это серверная сторона, поэтому я могу показать ее только для зарегистрированных пользователей, но я хочу, чтобы она запускала функцию javascript, и, похоже, когда она runat="server", она всегда вызывает событие обратной передачи.

У меня также есть обычная кнопка (<input...>) не работает на сервер и он работает нормально...

Как я могу заставить эту кнопку запускать только javascript, а не postback?

12 ответов


пусть ваш 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 () функция, чтобы избежать postback

<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 сейчас!)


вы не говорите, какую версию .NET framework вы используете.

Если вы используете v2.0 или больше вы можете использовать свойство OnClientClick для выполнения функции Javascript при возникновении события onclick кнопки.

все, что вам нужно сделать, чтобы предотвратить обратную передачу сервера, - это return false из вызываемой функции JavaScript.


ASP.NET всегда генерировать asp:Button как input type=submit.
Если вы хотите кнопку, которая не делает сообщение, но нужен некоторый контроль для элемента на стороне сервера, создайте простой HTML-вход с атрибутами type=button и runat=server.

если вы отключите действия щелчкаOnClientClick=return false, он ничего не будет делать по щелчку, если вы не создадите такую функцию, как:

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

дополнительно для принятого ответа вы можете использовать UseSubmitBehavior= " false" MSDN


в моем случае я решил добавить возврат в onClientClick:

Код

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

Конструктора

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

вы можете использовать этот код:

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

Если nee submit

...
<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>

При Проверке

В этом примере я использовал два элемента управления,ddl и txtbox, счастливого кодирования

 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>

Вы можете использовать JQuery для этого

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

чем в JQuery

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