無効な検証でアコーディオンペインを拡張します
-
12-12-2019 - |
質問
私はさまざまなTextBoxコントロールとドロップダウンリストを含むアコーデオンパンのコレクションを持っています。
フォーム送信にいくつかのサーバーサイドの検証が行われた場合は、無効なバリデータメッセージを含む以前最小化されたペインを自動的に展開できるものがありますか?それ以外の場合は、そのフォームが理由なしに送信できないことがユーザーに表示されます。
もう1つのシナリオ:入力に関連付けられたクライアント側バリデータを持つ複数のペインがあるとしましょう。ペインが最小化されている場合(したがって、バリデータのerrorMessageが表示されない場合)は、送信時にAjaxページの検証が行われたときに適切なペインを拡張する方法はありますか?
私はこのアプローチへのブルートフォースの方法があることを知っています。。
解決
このようなものについてはどうですか(jQueryを使っているが、私はそれがプレーンJavaScriptに変換することができると確信しています)...
$(document).ready(function(){
if (isPostback()){
$.each(Page_Validators, function(index, validator) {
if (!validator.isvalid) {
// do something here to locate the accordion based on the validator
// $(this) is the currently invalid validator element as a jquery object/wrapped set
// so for example...
$(this).parent().slideDown();
// This assumes that the immediate parent of of the validator is the accordion which is unlikely but if you post your emitted html I can write the appropriate selector for you.
}
});
}
});
.
あなたはそれが最初の負荷を発射したくないのでこのような手法を使うことができます JavaScriptでのポストバックを検出/追跡する方法?とあなたがDocument.Readyの後にポストバックにあるかどうかを確認します - 私はリンク内のアドバイスを使用したと仮定し、ポストバック検出のためのあなたの関数はIspostbackと呼ばれています()
他のヒント
この問題のために建てられたプロジェクトがあります。"http://www.codeproject.com/articlics/4397/validating-accordion-and-radpanelbar-using-ajax-an" rel="nofollow"> http://www.codeproject.com/articles/43397/validating-ACCORDION-AND-RADPANELBAR-using-ajax-an
豊かな殴打はそれに勝ちました、しかしこれはバニラJSバージョン(IE9 +)です:
Page_Validators
.filter(function(v) { return !v.isvalid; })
.forEach(function (v) { console.log(v.parentNode); });
.
-tagの下にコードを配置することを忘れないでください。ASP.NETから必要なJavaScriptがロードされる前にコードを実行する可能性があるため、jQuerys Document.ReadyおよびWindow.Onloadの使用に問題がありました。
アップデート:よりブラウザ互換バージョン
for(var i = 0; i < Page_Validators.length; i++) {
var validator = Page_Validators[i];
if (!validator.isvalid) {
console.log(validator.parentNode);
}
}
.