Как отключить обратную передачу на кнопку asp - PullRequest
132 голосов
/ 26 марта 2009

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

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

Как сделать так, чтобы эта кнопка запускала только JavaScript, а не обратную передачу?

Ответы [ 12 ]

254 голосов
/ 26 марта 2009

Пусть ваш javascript вернет false когда это будет сделано.

<asp:button runat="server".... OnClientClick="myfunction(); return false;" />
36 голосов
/ 26 марта 2009
YourButton.Attributes.Add("onclick", "return false");

или

<asp:button runat="server" ... OnClientClick="return false" />
13 голосов
/ 24 июля 2014

Вы можете использовать jquery click action и использовать функцию protectDefault () , чтобы избежать обратной передачи

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


$("#btnMyButton").click(function (e) {
// some actions here
 e.preventDefault();
}
8 голосов
/ 21 апреля 2011

Учтите это.

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

}
     </script>
6 голосов
/ 26 марта 2009

Другие правы, что вам нужен ваш обратный вызов, чтобы вернуть ложь; однако я хотел бы добавить, что делать это, устанавливая onclick, - это ужасно старый способ делать вещи. Я бы рекомендовал прочитать о ненавязчивом javascript . Использование библиотеки, такой как jQuery , может упростить вашу жизнь, а HTML-код менее связан с вашим javascript (и jQuery, поддерживаемым Microsoft сейчас!)

4 голосов
/ 27 марта 2017

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

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

function btnClick() {
    // do stuff
    return false;
}
3 голосов
/ 26 марта 2009

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

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

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

2 голосов
/ 28 ноября 2016

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

<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>
2 голосов
/ 04 мая 2016

В моем случае я решил добавить возврат в 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()" />
2 голосов
/ 03 ноября 2015

с проверкой

В этом примере я использовал два элемента управления, 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...