4

jquery,bootstrapWizard プラグインを使用して、標準フォームをウィザードに変換しています。私はこれを機能させましたが、フォームを書き直し、jquery と関連するスクリプトを更新すると、フォームが破損し、何が問題なのかわかりません。

ブートストラップ バージョン 3.1.1 を使用しています。Jquery 2.01 私のフォームには 4 つのタブがあり、外観は正しく設定されています。フォームの上部にあるナビゲーション ボタンを使用して各タブに移動できますが、次のボタンを使用して 2 ページ目以降に移動することはできません。

最初は検証が問題を引き起こしていると思っていたので、検証スクリプトを削除しましたが、問題はまだ発生しています。

ボタンでナビゲートすると、最終送信ボタンが表示されません。HTML に問題があるのか​​どうかはわかりません。標準のセットアップを使用したことがありますが、それともプラグイン スクリプトなのかセットアップ スクリプトなのかわかりません。

フィドルをセットアップしますが、前にこの問題に遭遇した人はいますか

基本的なウィザードの HTML は次のとおりです。

  <form action="dummy">
    <div class="wizard-form">
            <div class="wizard-content">
              <ul class="nav nav-pills nav-justified steps">
                <li>
                  <a href="#step1" data-toggle="tab" class="wiz-step active">
                    <span class="step-number">1</span>
                    <span class="step-name">
                      <i class="fa fa-check"></i>
                      Article Details
                    </span>
                  </a>
                </li>

                <li>
                  <a href="#step2" data-toggle="tab" class="wiz-step">
                    <span class="step-number">2</span>
                    <span class="step-name">
                      <i class="fa fa-check"></i>
                      Article Content
                    </span>
                  </a>
                </li>
                <li>
                  <a href="#step3" data-toggle="tab" class="wiz-step">
                    <span class="step-number">3</span>
                    <span class="step-name">
                      <i class="fa fa-check"></i>
                      Images and Files
                    </span>
                  </a>
                </li>
                <li>
                  <a href="#step4" data-toggle="tab" class="wiz-step">
                    <span class="step-number">4</span>
                    <span class="step-name">
                      <i class="fa fa-check"></i>
                      Attributes and Submit
                    </span>
                  </a>
                </li>
              </ul>
              <div id="bar" class="progress progress-striped progress-sm active" role="progressbar">
                <div class="progress-bar progress-bar-warning"></div>
              </div>
              <div class="tab-content">

                <div class="alert alert-danger display-none">
                  <a class="close" aria-hidden="true" href="#" data-dismiss="alert">×</a>
                  Your article has errors. Please correct them to proceed.
                </div>
                <div class="alert alert-success display-none">
                  <a class="close" aria-hidden="true" href="#" data-dismiss="alert">×</a>
                  Your form validation is successful!
                </div>
                <!-- TAB PANE 1 -->
                <div class="tab-pane active" id="step1">
                  <p>Tab 1</p>


                </div>
                <!-- TAB PANE 2 -->
                <div class="tab-pane" id="step2">

                 <p>Tab 2</p>

                </div>
                <!-- TAB PANE 3 -->
                <div class="tab-pane" id="step3">
                  <p>Tab 3</p>

                </div>

                <!-- TAB PANE 4 -->
                <div class="tab-pane" id="step4">
                  <p>Tab 4</p>


                </div>
              </div>
            </div>

          </div>
          <div class="wizard-buttons">
            <div class="row">
              <div class="col-md-12">
                <div class="col-md-offset-3 col-md-9">
                  <a href="javascript:;" class="btn btn-default prevBtn">
                    <i class="fa fa-arrow-circle-left"></i>
                    Back
                  </a>
                  <a href="javascript:;" class="btn btn-primary nextBtn">
                    Continue
                    <i class="fa fa-arrow-circle-right"></i>
                  </a>
                  <a href="javascript:;" class="btn btn-success submitBtn">
                    Submit
                    <i class="fa fa-arrow-circle-right"></i>
                  </a>
                </div>
              </div>
            </div>
          </div>
        </div>
        </form>

ウィザード スクリプトは次のとおりです。

var FormWizard = function() {
console.log("setting up form");
return {
    init: function() {
        if (!jQuery().bootstrapWizard) {
            return;
        }

        var wizform = $('#myForm');
        var alert_success = $('.alert-success', wizform);
        var alert_error = $('.alert-danger', wizform);



        /*-----------------------------------------------------------------------------------*/
        /*  Initialize Bootstrap Wizard
        /*-----------------------------------------------------------------------------------*/
        $('#formWizard').bootstrapWizard({
            'nextSelector': '.nextBtn',
            'previousSelector': '.prevBtn',
            onNext: function(tab, navigation, index) {
                alert_success.hide();
                alert_error.hide();

                var total = navigation.find('li').length;
                console.log("Total:", total);
                var current = index + 1;
                console.log("current:", current)
                $('.stepHeader', $('#formWizard')).text('Step ' + (index + 1) + ' of ' + total);
                jQuery('li', $('#formWizard')).removeClass("done");
                var li_list = navigation.find('li');
                 for (var i = 0; i < index; i++) {
                     jQuery(li_list[i]).addClass("done");
                 }
                if (current == 1) {
                    $('#formWizard').find('.prevBtn').hide();
                } else {
                    $('#formWizard').find('.prevBtn').show();
                }
                if (current >= total) {
                    $('#formWizard').find('.nextBtn').hide();
                    $('#formWizard').find('.submitBtn').show();
                } else {
                    $('#formWizard').find('.nextBtn').show();
                    $('#formWizard').find('.submitBtn').hide();
                }
            },
            onPrevious: function(tab, navigation, index) {
                alert_success.hide();
                alert_error.hide();
                var total = navigation.find('li').length;
                var current = index + 1;
                $('.stepHeader', $('#formWizard')).text('Step ' + (index + 1) + ' of ' + total);
                jQuery('li', $('#formWizard')).removeClass("done");
                var li_list = navigation.find('li');
                for (var i = 0; i < index; i++) {
                    jQuery(li_list[i]).addClass("done");
                }
                if (current == 1) {
                    $('#formWizard').find('.prevBtn').hide();
                } else {
                    $('#formWizard').find('.prevBtn').show();
                }
                if (current >= total) {
                    $('#formWizard').find('.nextBtn').hide();
                    $('#formWizard').find('.submitBtn').show();
                } else {
                    $('#formWizard').find('.nextBtn').show();
                    $('#formWizard').find('.submitBtn').hide();
                }
            },
            onTabClick: function(tab, navigation, index) {
                 bootbox.alert('On Tab click is disabled');
                 return false;
            },
            onTabShow: function(tab, navigation, index) {
                 var total = navigation.find('li').length;
                 var current = index + 1;
                 var $percent = (current / total) * 100;
                 $('#formWizard').find('.progress-bar').css({
                     width: $percent + '%'
                 });
            }
        });



        $('#formWizard').find('.prevBtn').hide();


    }
};

更新: onNext イベントに配置された以下の質問に従って、インデックスなどを取得するために、console.logs をいくつか追加しました。最初のクリック後、インデックスは 1 として表示されます。これは正しいですが、それ以上増加しません。

戻るボタンも機能しないことにも気付きました。そのため、タブ 2 (インデックス 1) に移動してスタックします。

4

3 に答える 3

2

解決策は、自分のセットアップが問題であると除外することができたという点で、Tomanow の回答によって助けられました - ありがとう。

プラグイン スクリプト自体に関連する最終的な解決策。以前の作業ページでは、正しく機能する縮小版を使用していました。このページを開発している間、フルバージョンを使用しました。

ここのプラグインを縮小版に置き換えたところ、すべてが再び機能し、完全なスクリプトに戻って失敗しました。そのため、途中で私のライブラリが破損しました。

最新バージョンをダウンロードし、現在すべて動作しています。

基本が失敗するととてもイライラする

于 2014-02-28T10:22:59.677 に答える
2

あなたのためにそれを働かせることができました:Fiddle

formWizard次のように、id をフォームに追加する必要があります。

<form action="dummy" id="formWizard">

次に、JS を次のように変更します。

var FormWizard = function () {
    console.log("setting up form");

        var wizform = $('#myForm');
        var alert_success = $('.alert-success', wizform);
        var alert_error = $('.alert-danger', wizform);



        /*-----------------------------------------------------------------------------------*/
        /*  Initialize Bootstrap Wizard
        /*-----------------------------------------------------------------------------------*/
        $('#formWizard').bootstrapWizard({
            'nextSelector': '.nextBtn',
                'previousSelector': '.prevBtn',
            onNext: function (tab, navigation, index) {
                alert_success.hide();
                alert_error.hide();

                var total = navigation.find('li').length;
                console.log("Total:", total);
                var current = index + 1;
                console.log("current:", current)
                $('.stepHeader', $('#formWizard')).text('Step ' + (index + 1) + ' of ' + total);
                jQuery('li', $('#formWizard')).removeClass("done");
                var li_list = navigation.find('li');
                for (var i = 0; i < index; i++) {
                    jQuery(li_list[i]).addClass("done");
                }
                if (current == 1) {
                    $('#formWizard').find('.prevBtn').hide();
                } else {
                    $('#formWizard').find('.prevBtn').show();
                }
                if (current >= total) {
                    $('#formWizard').find('.nextBtn').hide();
                    $('#formWizard').find('.submitBtn').show();
                } else {
                    $('#formWizard').find('.nextBtn').show();
                    $('#formWizard').find('.submitBtn').hide();
                }
            },
            onPrevious: function (tab, navigation, index) {
                alert_success.hide();
                alert_error.hide();
                var total = navigation.find('li').length;
                var current = index + 1;
                $('.stepHeader', $('#formWizard')).text('Step ' + (index + 1) + ' of ' + total);
                jQuery('li', $('#formWizard')).removeClass("done");
                var li_list = navigation.find('li');
                for (var i = 0; i < index; i++) {
                    jQuery(li_list[i]).addClass("done");
                }
                if (current == 1) {
                    $('#formWizard').find('.prevBtn').hide();
                } else {
                    $('#formWizard').find('.prevBtn').show();
                }
                if (current >= total) {
                    $('#formWizard').find('.nextBtn').hide();
                    $('#formWizard').find('.submitBtn').show();
                } else {
                    $('#formWizard').find('.nextBtn').show();
                    $('#formWizard').find('.submitBtn').hide();
                }
            },
            onTabClick: function (tab, navigation, index) {
                bootbox.alert('On Tab click is disabled');
                return false;
            },
            onTabShow: function (tab, navigation, index) {
                var total = navigation.find('li').length;
                var current = index + 1;
                var $percent = (current / total) * 100;
                $('#formWizard').find('.progress-bar').css({
                    width: $percent + '%'
                });
            }
        });

        $('#formWizard').find('.prevBtn').hide();
};

$(document).ready(function() {
    FormWizard();
});
于 2014-02-27T23:54:33.413 に答える
0

問題はブートストラップ バージョンにあります。ブートストラップ JavaScript のバージョンを 2.3.2 にダウングレードして、機能させます。

[解決済み] ブートストラップ ウィザードの [次へ] ボタンが機能しない問題を確認できます

于 2015-06-22T07:24:50.643 に答える