Asp Düğmesinde postback nasıl devre dışı bırakılır


135

Bir asp düğmem var. Sadece oturum açmış kullanıcılar için gösterebilirim sunucu tarafı, ama bir javascript işlevi çalıştırmak istiyorum ve runat = "sunucu" her zaman postback olayı çağırır gibi görünüyor.

Ayrıca <input...sunucuda çalışmıyor düzenli bir düğme ( >) var ve iyi çalışıyor ...

Bu düğmeyi geri gönderme değil yalnızca javascript'i nasıl çalıştırabilirim?

Yanıtlar:


263

İşiniz bittiğinde javascriptinizin false döndürmesini sağlayın.

<asp:button runat="server".... OnClientClick="myfunction(); return false;" />

16
Çoğu durumda insanlar bu sözdizimiyle bir onclick veya OnClientClick kullanır <asp: Button OnClientClick = "myFunction ()" /> burada myFunction () yanlış döndürür ve bu yeterli değildir - OnClientClick = "return myFunction ()"
Bron Davies

17
UseSubmitBehavior = "False" yanı sıra eklemek zorunda kaldım; return false
rob

9
'NedenleriValidation = "false" eklediğinizden emin olun, aksi takdirde' WebForm_DoPostBackWithOptions 've bir sürü ekstra işaretleme ekler.
Carter Medlin

Bu benim için ASP.NET 4+' OnClientClick="return false"de işe yaramadı , ancak Konstantin'in cevabı basitçe işe yaradı.
TylerH

39
YourButton.Attributes.Add("onclick", "return false");

veya

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

15

Geri göndermeyi önlemek için jquery tıklama eylemini kullanabilir ve preventDefault () işlevini kullanabilirsiniz

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


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

Bu zarif bir yanıttır, çünkü devre dışı bırakılacak koşulları test etmenize izin verir.
John Mott

1
Bu etkinliğe güvenen diğer etkinlikleri durduracağından asla cancelDefault kullanmayın -1
Piotr Kula

1
@ppumkin: preventDefault, diğer olay dinleyicilerine bu olayı gerçekleştirdiğinizi söylemek için harika bir yoldur, böylece bunu yapmak zorunda kalmazlar. Ne demek istediğini stopPropagation olduğunu düşünüyorum, bu da olayın diğer olay dinleyicileri tarafından duyulmasını bile engelliyor.
Sebbas

Yeaaaaaaaaaa. Hayır. 4 yıl sonra artık bunun arkasında duruyorum. Sadece hiçbirini yapma.
Piotr Kula

8

Bunu düşün.

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

}
     </script>


4

ASP.NET her zaman asp:Buttonbir input type=submit.
Gönderi yapmayan ancak sunucu tarafında öğe için biraz kontrol gerektiren bir düğme istiyorsanız, nitelikleri olan basit bir HTML girişi oluşturun type=buttonverunat=server .

Tıklama eylemlerini gerçekleştirmeyi devre dışı bırakırsanız OnClientClick=return false, aşağıdaki gibi bir işlev oluşturmadıkça tıklamada hiçbir şey yapmaz:

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

3

Hangi .NET framework sürümünü kullandığınızı söylemezsiniz.

V2.0 veya üstünü kullanıyorsanız, düğmenin onclick olayı yükseltildiğinde bir Javascript işlevi yürütmek için OnClientClick özelliğini kullanabilirsiniz.

Bir sunucunun geri gönderilmesini önlemek için tek yapmanız gereken geri dönüş false , çağrılan JavaScript işlevinden .



3

Benim durumumda, onClientClick'te dönüş ekleyerek çözdüm:

Arkasındaki Kod

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

Tasarım Yüzeyi

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

Bundan OnClicksonra yöntem nasıl çalıştırılır .
5377037

2

kodu kullanabilirsiniz:

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

eğer gönderirsen

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

Doğrulama ile

Bu örnekte iki kontrol kullandım ddlve txtboxmutlu bir kodlama aldım

 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>

2

Bunun için JQuery kullanabilirsiniz

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

JQuery'den daha

$("#btnID").click(function(e){e.preventDefault();})
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.