ホームページ  >  記事  >  ウェブフロントエンド  >  検証コントロールの OnClientClick イベントと Button_javascript スキルの詳細な分析

検証コントロールの OnClientClick イベントと Button_javascript スキルの詳細な分析

WBOY
WBOYオリジナル
2016-05-16 17:11:00933ブラウズ

1. イベント

これは私が長い間無視してきたか、発見できなかった問題です。問題は次のとおりです。

ページに検証コントロールがあり、Button コントロールが OnClientClick イベントをトリガーし、このイベントが true と false を返すと、検証コントロールは無効になり、機能しなくなります。具体的な説明は次のとおりです。

.Net ページは次のとおりです:

コードをコピーします コードは次のとおりです:




< ;div>

ErrorMessage="null にすることはできません" Display="None">ID="ValidatorCalloutExtender1" TargetControlID="RequiredFieldValidator1" runat="server" >





上記のように、TextBoxTest の値が入力できないように、RequireFieldValidator 検証コントロールをページに追加します。 ButtonText がページを送信するときは、送信が必要かどうかをユーザーが確認する必要があります。非常にシンプルなページなので問題はないようです。ただし、TextBoxTest の値が空の場合、検証コントロールは機能せず、ページは正常に送信されます。その理由は何でしょうか?

2. イベントへの応答

何が起こっているのですか?まず、ButtonTest の OnClientClick イベントを削除した後、検証コントロールが機能しました。これはなぜでしょうか?ページのソース コードを確認したところ、ButtonTest コントロールが次のソース コードを生成していることがわかりました:

このソース コード行からわかるように、検証コントロールはクライアント側で JavaScript コードを生成し、TextBox の値が空かどうかを確認します。 ButtonTest の OnClientClick を追加した後、ソース コードを再確認しました。ButtonTest コントロールによって生成されたソース コードは次のとおりです。

このコード行から、クライアント側でどこに問題があるのか​​が明確にわかります。この例では、カスタム JavaScript が最初に実行され、次に検証コントロールによって生成された JavaScript が実行されます。検証制御は意味を失います。

3. 応答制御

問題がどこにあるのかがわかっていれば、解決はより簡単になります。私の解決策は次のとおりです。カスタム JavaScript (returnconfirm('Are you always want to submit?') を実行する前に、ページ上のコントロールを確認してください。ルールに準拠するため、ButtonTest の OnClientClick イベントを次のように変更しました。


コードをコピー コードは次のとおりです。 🎜>


CheckClientValidate() メソッドのコードは次のとおりです:


コードをコピーします コードは次のとおりです。



実行、テスト。検証コントロールが機能します。問題は解決しました。

4.追記

これは私が無視すべき問題と解決策であると知っていましたが、この問題を発見したとき、私は冷や汗をかきました。そうでないと悲惨なことになるでしょう。ここから、厳密なサーバー側検証を指定することがいかに必要であるかもわかります :-)。これにより、「ハッカー」がクライアントの検証を回避することを防ぐだけでなく、自分自身が気付かないエラーによって引き起こされるデータの不正確性も防ぐことができます。

注:

Page_ClientValidate()、この関数は Microsoft 検証コントロールを含む aspx ページで使用され、ユーザー入力操作が正当かどうかに応じて True または False を返します

直接判断できる。

コードをコピー コードは次のとおりです:

if(Page_ClientValidate())
{
return true;
}
else
{
return false;
}
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:Javascript_javascript スキルの角括弧「[]」の曖昧さを解析する次の記事:Javascript_javascript スキルの角括弧「[]」の曖昧さを解析する

関連記事

続きを見る