jQueryサイクルプラグインは、検証グループが有効でない場合、次のポストバックで次のスライドにサイクリングする必要があります
-
25-09-2019 - |
質問
jQuery Cycle Plugin(別のサイト全体のカスタムJSファイルで定義された属性を使用)を使用して、フォームの2ページ(テーブルで区切られている)間でサイクリングしています。各ページには、そのページのコントロール用の独自の検証グループがあります。最初のページには、クリックしたときに最初の検証グループのページ検証を手動で発射する「次の」ボタンがあります。失敗した場合、ユーザーが情報を修正するためにツールのヒントが表示されます。検証が成功した場合、Cycle Nextコマンドが呼び出されます。
$('#request-information').cycle('next');
2番目のページでは、コントロールは、送信ボタンを使用して2番目の検証グループにグループ化されます。 [送信]ボタンがクリックされると、サーバー側の検証がトリガーされ、Pageがfostbackでリロードされた場合に障害が発生します。 2番目のページが失敗した場合を除き、このすべてが機能します。フォームを2番目のページにとどめることを望みます。したがって、フォームの2番目のページが検証に失敗したためにWebページがリロードされている場合、フォームの2番目のページに開始スライドを設定するか、少なくともCycle Nextコマンドをトリガーできない場合は、
StartingSlideをフォームの2番目のページに設定できるようには見えません。
だから、送信ボタンがクリックされたときに2番目の検証グループが失敗したかどうかに基づいて、ポストバックページのロードで2番目のスライドに進む方法を知っている人はいますか?または、ViewStateなどを使用して違うことをする必要がありますか?
申し訳ありませんが、これは長い巻き上げの質問です。明確で混乱しないことを願っています。ありがとうございました
解決
ページが読み込まれたときに2番目のスライドに行く必要があることがわかっている場合は、次のようなことをすることができます。
var init = { startingSlide: 1 }; // i.e. second slide, the indices are zero-based
$('whatever').cycle($.extend(init, the_name_of_your_global_default_options));
手配する必要があります init
設定する必要がある場合を除き、文字通りの空のオブジェクトになるために startingSlide
. 。もしも .cycle()
ページの外側のどこかにある場合、ページ固有のオプションの変数を予約できます。 $.extend()
それ .cycle()
呼ばれています。たとえば、あなたのページでは、次のようなことをすることができます。
app_name_space.page_cycle_opts = { startingSlide: 1 };
そして、サイクルのものをバインドしているJavaScriptファイルで外れます。
app_name_space.page_cycle_opts = app_name_space.page_cycle_opts || { };
$('whatever').cycle($.extend(app_name_space.page_cycle_opts, default_options));
私は使用しています app_name_space
名前の競合を回避するために、アプリケーションがすでに使用しているグローバルネームスペースのプレースホルダーとして。 1つのページで複数のサイクルインスタンスを処理する必要がある場合は、インデックスを作成する必要があります。 page_cycle_opts
たとえば、要素IDによる:
app_name_space.page_cycle_opts['X'] = { startingSlide: 1 };
そして、他の場所で外れてください:
$('whatever').each(function() {
$(this).cycle($.extend(
app_name_space.page_cycle_opts[this.id] || { },
default_options
));
});
基本的なアイデアは、グローバルな構成オプションをデフォルトのセットとして考慮し、明確に定義された文書化されたメカニズムを介してページ固有のオーバーライドを許可することです。
長く巻き込まれた質問に対する長い曲がりくねった答え。明確で混乱しないことを願っています。