Bir asp için OnClientClick vs OnClick: CheckBox?

oy
81

CheckBox asp gelince, bir OnClick = özelliği ziyade bir OnClientClick = özelliği olması gerekir: Herkes bir istemci tarafı asp için JavaScript işleyicisi neden biliyor mu Düğmesi?

Örneğin, bu çalışır:

<asp:CheckBox runat=server OnClick=alert(this.checked); />

ve bu değil (hata yok) yapar:

<asp:CheckBox runat=server OnClientClick=alert(this.checked); />

ama bu işler:

<asp:Button runat=server OnClientClick=alert('Hi'); />

ve bu (derleme zamanı hatası) değildir:

<asp:Button runat=server OnClick=alert('hi'); />

(; ... CheckBox aynı şekilde çalışmıyor neden merak ediyorum ben Button.OnClick ne olduğunu biliyorum)

Oluştur 16/07/2009 saat 03:27
kaynak kullanıcı
Diğer dillerde...                            


8 cevaplar

oy
8

Haklısınız bu tutarsız bulunmaktadır. Ne oluyor bir sunucu tarafı OnClick olay VAR etmediğini CheckBox, bu yüzden İşaretlemenizin tarayıcıya işlenen alır. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkbox_events.aspx

ASP.NET sizin OnClick işaretlemesindeki bir olaya bir referans beklediğini yüzden - Düğme Oysa bir OnClick var.

Cevap 16/07/2009 saat 03:34
kaynak kullanıcı

oy
98

Bu çok garip. Kontrol ettim CheckBox dokümantasyon sayfasını okur

<asp:CheckBox id="CheckBox1" 
     AutoPostBack="True|False"
     Text="Label"
     TextAlign="Right|Left"
     Checked="True|False"
     OnCheckedChanged="OnCheckedChangedMethod"
     runat="server"/>

Gördüğünüz gibi, hiçbir OnClick veya OnClientClick özellikler bulunabilir tanımlanır.

Bu nokta göz önünde, bu ne olup bittiğini olduğunu düşünüyorum.

Bunu yaptığınızda,

<asp:CheckBox runat="server" OnClick="alert(this.checked);" />

ASP.NET OnClick özelliği değiştirmek ve tarayıcıda olduğu gibi işler. Sanki hale getirilecektir:

  <input type="checkbox" OnClick="alert(this.checked);" />

Açıkçası, bir tarayıcı 'OnClick' anlamak ve bir uyarı koyar olabilir.

Ve bu senaryoda

<asp:CheckBox runat="server" OnClientClick="alert(this.checked);" />

Yine, ASP.NET OnClientClick niteliğini değiştirmeyecektir gibi işlemez

<input type="checkbox" OnClientClick="alert(this.checked);" />

tarayıcı OnClientClick anlamayacaktır gibi hiçbir şey olmaz. sadece başka bir özellik olduğu gibi aynı zamanda herhangi bir hata yükseltmez.

Sen oluşturulan HTML bakarak yukarıdaki onaylayabilir.

Ve evet, bu hiç de kolay değildir.

Cevap 16/07/2009 saat 03:35
kaynak kullanıcı

oy
8

onlar kontrollerin iki farklı türü vardır Çünkü ...

Sen, web tarayıcı, sunucu tarafı programlama hakkında bilmez görüyoruz. sadece başlıbaşına DOM ve kullandığı olay modelleri ... hakkında Ve buna verilen nesnelerin click olaylarını bilir. Aslında farkları kendini görmek için ASP.Net gelen tarayıcıya gönderilen son işaretlemeyi incelemek gerekir.

<asp:CheckBox runat="server" OnClick="alert(this.checked);" />

zorlastırmaktadır

<input type="check" OnClick="alert(this.checked);" />

ve

<asp:CheckBox runat="server" OnClientClick="alert(this.checked);" />

zorlastırmaktadır

<input type="check" OnClientClick="alert(this.checked);" />

Şimdi, ben hatırlamak gibi yakın gibi kendi DOM "OnClientClick" olayını destekleyen hiçbir yerde tarayıcılar vardır ...

tarayıcıya gönderilen olarak şüphe, daima çıkış kaynağını görüntülediğinizde ... Gördüğünüz ayıklama bilgileri bir bütün dünya var.

Cevap 16/07/2009 saat 03:39
kaynak kullanıcı

oy
1

Ben uyarıları ve mesajları temizleyerek ve VS bu konuda uyarmak etmez görmek edildi: Doğrulama (ASP.Net): Özellik 'OnClick' eleman 'CheckBox' geçerli bir nitelik değildir. Bir istemci tarafı işleyicisi belirtmek için html giriş kontrolünü kullanın ve sonra ekstra span etiketi ve iki öğeyi alamayacak.

Cevap 03/10/2010 saat 21:56
kaynak kullanıcı

oy
5

Burada sunucu tarafı arayan var olanlarınız için OnClickişleyici öyleOnCheckedChanged

Cevap 29/11/2012 saat 17:00
kaynak kullanıcı

oy
-1

Bir çözüm JQuery ile geçerli:

$(document).ready(
    function () {
        $('#mycheckboxId').click(function () {
               // here the action or function to call
        });
    }
);
Cevap 19/01/2015 saat 16:17
kaynak kullanıcı

oy
0

Böyle etiketi yapabilirsiniz:

<asp:CheckBox runat="server" ID="ckRouteNow" Text="Send Now" OnClick="checkchanged(this)" />

denilen JavaScript .checked mülkiyet ... onay kutusunu mevcut durumu doğru olacaktır:

  function checkchanged(obj) {
      alert(obj.checked)
  }
Cevap 14/02/2018 saat 21:28
kaynak kullanıcı

oy
0

Asp.net CheckBox yöntemi OnClientClick desteklememektedir.
Eğer asp için bazı javascript olay eklemek istiyorsanız: CheckBox siz "Pre_Render" veya sunucu kodunda "Page_Load" olaylara ilişkin özelliklerini eklemek zorunda:

C #:

    private void Page_Load(object sender, EventArgs e)
    {
        SomeCheckBoxId.Attributes["onclick"] = "MyJavaScriptMethod(this);";
    }

Not: Eğer sayfa başlığında AutoEventWireup = "false" olarak ayarlanmalıdır yok olun.

VB:

    Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        SomeCheckBoxId.Attributes("onclick") = "MyJavaScriptMethod(this);"
    End Sub
Cevap 19/12/2018 saat 12:29
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more