ASPXページのフォームがJavaScriptで有効かどうかを判断する最良の方法は何ですか?
JavaScript window.showModalDialog()
を使用して開かれたユーザーコントロールの検証を確認しようとしていますが、サーバー側で 'Page.IsValid'プロパティを確認しても機能しません。ページ検証にASP.NET検証コントロールを使用しています。
多数のASP.NET検証コントロールを使用しているページがある場合、次のようなコードを使用してページを検証します。入力サブミットで呼び出しを行います。うまくいけば、このコードサンプルがあなたを始めさせるでしょう!
<input type="submit" value="Submit" onclick"ValidatePage();" />
<script type="text/javascript">
function ValidatePage() {
if (typeof (Page_ClientValidate) == 'function') {
Page_ClientValidate();
}
if (Page_IsValid) {
// do something
alert('Page is valid!');
}
else {
// do something else
alert('Page is not valid!');
}
}
</script>
Page.IsValid
をチェックしています。Page_IsValid
をチェックする必要があります(.NETバリデーターによって公開される変数です):)
ASP.NET検証コントロールは、javascriptで使用できるクライアント側APIを公開します。 http://msdn.Microsoft.com/en-us/library/aa479045.aspx
Page_IsValidオブジェクトをチェックして、無効な検証コントロールがあるかどうかを確認できるはずです。
$("input[id$=Button2]").click(function () {
var validated = Page_ClientValidate('repo');
if (validated) {
// JavaScript code.
}
});
JQueryと Validation プラグインを使用して、クライアント側の検証を実行できます。これは、htmlタグとasp.netサーバーコントロールの両方で機能します。 Phil Haackには良いサンプルプロジェクトがあります これで基本がわかります。
この SOの質問 にも、このアプローチの詳細なレビューがあります。
ページ内の各_asp.net
_バリデーターコントロールにValidationGroup
プロパティを設定します。ページ内のValidationGroup
に同じ名前を指定する必要があります。
例えば:
_<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Required" ValidationGroup="Validate"></asp:RequiredFieldValidator>
<asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="RangeValidator" ValidationGroup="Validate"></asp:RangeValidator>
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="CustomValidator" ValidationGroup="Validate"></asp:CustomValidator>
_
その後、Page_ClientValidate("ValidationGroup")
のようなjavascript呼び出しで
例えば:
_function ValidatePage(){
if(Page_ClientValidate("Validate")){ //validate using above validation controls group
//validation return true section
}
else{
//validation return false section
}
}
_