Asp.net
OnClick 與 OnClientClick 的 asp:CheckBox?
有誰知道為什麼 asp:CheckBox 的客戶端 javascript 處理程序需要是 OnClick="" 屬性而不是 OnClientClick="" 屬性,就像 asp:Button 一樣?
例如,這有效:
<asp:CheckBox runat="server" OnClick="alert(this.checked);" />這不會(沒有錯誤):
<asp:CheckBox runat="server" OnClientClick="alert(this.checked);" />但這有效:
<asp:Button runat="server" OnClientClick="alert('Hi');" />這不會(編譯時錯誤):
<asp:Button runat="server" OnClick="alert('hi');" />(我知道 Button.OnClick 的用途;我想知道為什麼 CheckBox 不能以同樣的方式工作……)
這很奇怪。我檢查了CheckBox 文件頁面,其中顯示
<asp:CheckBox id="CheckBox1" AutoPostBack="True|False" Text="Label" TextAlign="Right|Left" Checked="True|False" OnCheckedChanged="OnCheckedChangedMethod" runat="server"/>如您所見,沒有定義 OnClick 或 OnClientClick 屬性。
記住這一點,我認為這就是正在發生的事情。
當你這樣做時,
<asp:CheckBox runat="server" OnClick="alert(this.checked);" />ASP.NET 不會修改 OnClick 屬性並在瀏覽器上呈現它。它將呈現為:
<input type="checkbox" OnClick="alert(this.checked);" />顯然,瀏覽器可以理解“OnClick”並發出警報。
在這種情況下
<asp:CheckBox runat="server" OnClientClick="alert(this.checked);" />同樣,ASP.NET 不會更改 OnClientClick 屬性並將其呈現為
<input type="checkbox" OnClientClick="alert(this.checked);" />由於瀏覽器無法理解 OnClientClick 什麼都不會發生。它也不會引發任何錯誤,因為它只是另一個屬性。
您可以通過查看呈現的 HTML 來確認上述內容。
是的,這根本不直覺。