Weiß jemand, warum ein clientseitiger Javascript-Handler für asp: CheckBox ein OnClick = "" -Attribut und kein OnClientClick = "" -Attribut sein muss, wie für asp: Button?
Zum Beispiel funktioniert dies:
<asp:CheckBox runat="server" OnClick="alert(this.checked);" />
und das nicht (kein Fehler):
<asp:CheckBox runat="server" OnClientClick="alert(this.checked);" />
aber das funktioniert:
<asp:Button runat="server" OnClientClick="alert('Hi');" />
und das nicht (Kompilierungszeitfehler):
<asp:Button runat="server" OnClick="alert('hi');" />
(Ich weiß, wofür Button.OnClick ist; ich frage mich, warum CheckBox nicht auf die gleiche Weise funktioniert ...)
Weil es sich um zwei verschiedene Arten von Steuerelementen handelt ...
Sie sehen, Ihr Webbrowser weiß nichts über serverseitige Programmierung. Es kennt nur sein eigenes DOM und die von ihm verwendeten Ereignismodelle ... und für Klickereignisse von Objekten, die darauf gerendert wurden. Sie sollten das endgültige Markup untersuchen, das tatsächlich von ASP.Net an den Browser gesendet wird, um die Unterschiede selbst festzustellen.
rendert zu
und
rendert zu
Soweit ich mich erinnern kann, gibt es in ihrem DOM nirgendwo Browser, die das Ereignis "OnClientClick" unterstützen ...
Zeigen Sie im Zweifelsfall immer die Quelle der Ausgabe an, wenn diese an den Browser gesendet wird. Es gibt eine ganze Welt von Debug-Informationen, die Sie sehen können.
quelle
Sie haben Recht, das ist inkonsistent. Was passiert ist, dass CheckBox kein serverseitiges OnClick-Ereignis hat, sodass Ihr Markup im Browser gerendert wird. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkbox_events.aspx
Während Button über einen OnClick verfügt, erwartet ASP.NET einen Verweis auf ein Ereignis in Ihrem OnClick-Markup.
quelle
Für diejenigen unter Ihnen, die hierher gekommen sind und nach dem serverseitigen
OnClick
Handler suchen, ist dies der FallOnCheckedChanged
quelle
Ich habe Warnungen und Meldungen bereinigt und festgestellt, dass VS davor warnt: Validierung (ASP.Net): Das Attribut 'OnClick' ist kein gültiges Attribut des Elements 'CheckBox'. Verwenden Sie das HTML-Eingabesteuerelement, um einen clientseitigen Handler anzugeben. Anschließend erhalten Sie nicht das zusätzliche span-Tag und die beiden Elemente.
quelle
Asp.net CheckBox unterstützt die Methode OnClientClick nicht.
Wenn Sie ein Javascript-Ereignis zu asp: CheckBox hinzufügen möchten, müssen Sie verwandte Attribute für "Pre_Render" - oder "Page Load" -Ereignisse im Servercode hinzufügen:
C #:
Hinweis: Stellen Sie sicher, dass Sie im Seitenkopf nicht AutoEventWireup = "false" setzen.
VB:
quelle
Sie können das Tag folgendermaßen ausführen:
Die Eigenschaft .checked im aufgerufenen JavaScript ist korrekt ... der aktuelle Status des Kontrollkästchens:
quelle
Eine Lösung ist mit JQuery:
quelle