[解決済み] asp:CheckBoxのOnClickとOnClientClickの違い?
2023-06-06 15:43:48
質問
なぜ asp:CheckBox のクライアントサイド javascript ハンドラは asp:Button のように OnClientClick="" 属性ではなく、OnClick=" 属性でなければならないのか、誰か知っていますか?
例えば、これは動作します。
<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が同じように動作しないのかが不思議だ...)
どのように解決するのですか?
それは非常に奇妙です。私はチェックした チェックボックスのドキュメント ページ を読んでみると
<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を見ることで、上記のことを確認することができます。
そうそう、これって全然直感的じゃないですよね。
関連
-
NET6新機能 - 暗黙の名前空間参照
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] jQueryでドロップダウンリストの選択値を変更する
-
[解決済み] addEventListenerとonclickの比較
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
-
[解決済み] HTTPハンドラ vs HTTPモジュール
-
[解決済み] ASP.NET。HTTP エラー 500.19 - 内部サーバー エラー 0x8007000d
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
認証プロセスの記録にjwtを使用したネット
-
Application_End イベントをブロックする解決策
-
一時的なクラスを生成できない(result=1)、問題の解決方法
-
[解決済み] ファイルまたはアセンブリ 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' を読み込めません でした。
-
[解決済み] web.configでmaxJsonLengthの長さを無制限に設定することは可能ですか?
-
[解決済み] カタナ」と「オウイン」をわかりやすく説明すると?
-
[解決済み] web.configの変換で "Replace Or Insert "を行う方法はありますか?
-
[解決済み] ASP.NET MVCのAjaxポストでantiforgerytokenを含める。
-
[解決済み] ASP.Net MVCとWebフォームを比較する最大のメリット
-
[解決済み] HTTPハンドラ vs HTTPモジュール