1

日付を入力するための複合ユーザーコントロールがあります。

代替テキスト

CustomValidatorには、サーバー側の検証コードが含まれます。ユーザーが何らかの方法で日付値を変更した場合、クライアント側のスクリプトを介してエラーメッセージをクリアしたいと思います。これを行うために、2つのドロップダウンと年のテキストボックスを検証コントロールに接続する次のコードを含めました。

<script type="text/javascript">
    ValidatorHookupControlID("<%= ddlMonth.ClientID%>", document.getElementById("<%= CustomValidator1.ClientID%>"));
    ValidatorHookupControlID("<%= ddlDate.ClientID%>", document.getElementById("<%= CustomValidator1.ClientID%>"));
    ValidatorHookupControlID("<%= txtYear.ClientID%>", document.getElementById("<%= CustomValidator1.ClientID%>"));
</script>

ただし、ユーザーがクリアボタンをクリックしたときに検証エラーもクリアされるようにしたいと思います。ユーザーが[クリア]ボタンをクリックすると、他の3つのコントロールがリセットされます。ポストバックを回避するために、[クリア]ボタンは3つのコントロールをリセットするOnClickイベントを含む通常のHTMLボタンです。残念ながら、ValidatorHookupControlIDメソッドはHTMLコントロールでは機能しないようです。そのため、代わりにHTMLボタンをASPボタンに変更し、そのコントロールにフックアップすることを考えました。ただし、デフォルトでASPボタンコントロールに関連付けられているポストバック機能を削除できないようです。UseSubmitBehaviorをFalseに設定しようとしましたが、それでも送信されます。btnClear_OnClickクライアントコードでfalseを返そうとしましたが、ブラウザーに送信されたコードには、呼び出し後にDoPostback呼び出しが含まれていました。

btnClear.Attributes.Add("onClick", "btnClear_OnClick();")

OnClickコードを追加する代わりに、それを上書きしようとしましたが、DoPostBackコードは、ブラウザーに送信される最終的なコードに含まれていました。

クリックしたときにCustomValidatorエラーをクリアし、ポストバックを回避するために[クリア]ボタンを取得するにはどうすればよいですか?

   btnClear.Attributes.Item("onClick") = "btnClear_OnClick();"
4

2 に答える 2

2

通話return false;の最後にa を追加してみてください。onClickこれにより、デフォルトの動作 (この場合は送信) が妨げられるはずです。

btnClear.Attributes.Add("onClick", "btnClear_OnClick(); return false;")
于 2010-04-29T02:52:10.123 に答える
0

クライアント側が何も正しくクリックせずにエラーを修正した場合、クライアント側のエラーメッセージをクリアしたいですか?

私はあなたの問題が正しい場合はこのようなことをしましたが、クライアント側のjavascriptコードを呼び出し、問題が修正された場合にエラーメッセージが含まれるスパンを非表示にする再検証関数を呼び出しました。

私のブログ記事を見て、これがあなたが解決したいものであるかどうか私に知らせてください。あなたが読みたい部分は下に向かっています。

http://coding.infoconex.com/post/ASPNET-CustomValidator-that-validates-multiple-controls-using-both-Server-Side-and-Client-Side-scripting.aspx

于 2010-10-14T04:32:36.090 に答える