Saya memiliki tombol asp. Ini sisi server jadi saya hanya dapat menampilkannya untuk pengguna yang masuk, tetapi saya ingin menjalankan fungsi javascript dan tampaknya ketika itu runat = "server" itu selalu memanggil acara postback.
Saya juga memiliki tombol biasa (<input...
>) yang tidak berjalan di server dan berfungsi dengan baik ...
Bagaimana caranya agar tombol ini hanya menjalankan javascript dan bukan postback?
.net
asp.net
javascript
ajax
dkarzon.dll
sumber
sumber
OnClientClick="return false"
berhasil.YourButton.Attributes.Add("onclick", "return false");
atau
<asp:button runat="server" ... OnClientClick="return false" />
sumber
Anda bisa menggunakan aksi klik jquery dan menggunakan fungsi preventDefault () untuk menghindari postback
<asp:button ID="btnMyButton" runat="server" Text="MyButton" /> $("#btnMyButton").click(function (e) { // some actions here e.preventDefault(); }
sumber
Pertimbangkan ini.
<script type="text/javascript"> Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequest); function BeginRequest(sender, e) { e.get_postBackElement().disabled = true; } </script>
sumber
Yang lain benar bahwa Anda membutuhkan panggilan balik Anda untuk mengembalikan false; namun saya ingin menambahkan bahwa melakukannya dengan menyetel onclick adalah cara lama yang buruk dalam melakukan sesuatu. Saya akan merekomendasikan membaca tentang javascript yang tidak mengganggu . Menggunakan pustaka seperti jQuery dapat membuat hidup Anda lebih mudah, dan HTML kurang digabungkan dengan javascript Anda (dan jQuery didukung oleh Microsoft sekarang!)
sumber
ASP.NET selalu menghasilkan
asp:Button
sebagai fileinput type=submit
.Jika Anda menginginkan tombol yang tidak melakukan posting, tetapi membutuhkan kontrol untuk elemen di sisi server, buat input HTML sederhana dengan atribut
type=button
danrunat=server
.Jika Anda menonaktifkan tindakan klik
OnClientClick=return false
, itu tidak akan melakukan apa pun saat diklik, kecuali Anda membuat fungsi seperti:function btnClick() { // do stuff return false; }
sumber
Anda tidak mengatakan versi kerangka .NET mana yang Anda gunakan.
Jika Anda menggunakan v2.0 atau yang lebih baru, Anda dapat menggunakan properti OnClientClick untuk menjalankan fungsi Javascript saat peristiwa onclick tombol dimunculkan.
Yang harus Anda lakukan untuk mencegah server postback terjadi adalah kembali
false
dari fungsi JavaScript yang disebut.sumber
selain itu untuk jawaban yang diterima Anda dapat menggunakan UseSubmitBehavior = "false" MSDN
sumber
__doPostBack(
ke akhir skrip klik klien.Dalam kasus saya, saya menyelesaikan menambahkan pengembalian di onClientClick:
Kode Belakang
function verify(){ if (document.getElementById("idName").checked == "") { alert("Fill the field"); return false; } }
Permukaan Desain
<asp:Button runat="server" ID="send" Text="Send" onClientClick="return verify()" />
sumber
OnClick
metode setelah ini.Anda dapat menggunakan kode:
<asp:Button ID="Button2" runat="server" Text="Pulsa" OnClientClick="this.disabled=true" UseSubmitBehavior="False"/>
jika perlu mengirimkan
... <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>
sumber
Dengan Validasi
Dalam contoh ini saya menggunakan dua kontrol,
ddl
dantxtbox
, selamat codingasp: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>
sumber
Anda dapat menggunakan JQuery untuk ini
<asp:Button runat="server" ID="btnID" />
daripada di JQuery
$("#btnID").click(function(e){e.preventDefault();})
sumber
Anda hanya perlu mengembalikan false dari
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()" />
Fungsi JavaScript seperti di bawah ini.
Catatan * : Selalu gunakan blok try-catch dan kembalikan false dari blok catch untuk mencegah kesalahan penghitungan dalam fungsi javaScript.
sumber