2014-02-27 31 views
3

我正在使用jquery,bootstrapWizard插件將標準表單轉換爲嚮導。我已經有這個工作,但在重寫表單和更新jQuery和相關的腳本我已經損壞了形式,並不能看到出了什麼問題。bootstrap嚮導無法加載剩餘的標籤

我正在使用引導版本3.1.1。 jquery 2.01 我的表單有4個選項卡,外觀設置正確。我可以使用窗體頂部的導航按鈕導航到每個選項卡,但是我無法使用下一個按鈕導航到第二頁之外。

我以爲最初認爲導致問題,所以現在刪除了驗證腳本,但問題仍然存在。

使用按鈕導航最終提交按鈕不會出現。我不確定我的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(); 


    } 
}; 

更新: 我添加了幾個console.logs來獲取索引等,如下面的每個問題放在onNext事件。第一次點擊後,索引顯示爲1,這是正確的,但不會進一步增加。

我剛剛意識到後退按鈕也不起作用。因此,它得到片2(索引1)和卡

+0

是索引變量獲得正確的值嗎? – celerno

+0

JUst在此添加了更新。它在第二個選項卡上是正確的,但在單擊下一個按鈕時沒有進展 – Ray

回答

2

該解決方案由Tomanow答案是我能排除幫我設置爲問題 - 日謝謝你。

與插件腳本本身相關的最終解決方案。在之前的工作頁面中,我使用了正確工作的縮小版本。在我開發這個頁面時,我使用了完整版本。

我用縮小版本替換了這裏的插件,它全部重新工作,恢復爲完整的腳本並失敗。所以在我的圖書館變得腐敗的過程中一直存在。

已經下載了最新版本,現在所有的工作。

時,它的失敗

+0

您應該將此標記爲答案,因爲它是正確的,完整版似乎已損壞 – engma

2

設法得到它爲你工作:Fiddle

您需要的ID formWizard添加到您的形式,像這樣:

<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(); 
}); 
+0

嗨 - 感謝您爲此工作。我如上所述更新了我的表單和init腳本,但仍然在第二個選項卡上失敗。我的設置反映了一個工作,所以必須是一個圖書館腳本中的問題?因此,我將回到基礎測試,並從簡單的測試/版本開始構建它,並替換所有引導程序和其他腳本,以防它們被破壞。感謝您的幫助 – Ray