2017-12-04 1 views
0

私は多くのタブの1つの中にフォームを持っていますが、送信すると最初のページに戻ります。PHPフォームの送信時に使用された最後のタブを覚えている方法は?

<div class="panel panel-primary"> 
    <div class="panel-heading"> 
     <div class="panel-control"> 
      <ul class="nav nav-tabs"> 
       <li class="active"><a data-toggle="tab" href="#tab" aria-expanded="true">Tab1</a></li> 
       <li class=""><a data-toggle="tab" href="#tab-2" aria-expanded="false">Tab2</a></li> 
      </ul> 
     </div> 
     <h3 class="panel-title">Text</h3> 
    </div> 
    <div class="panel-body"> 
     <div class="tab-content"> 
      <div id="tab" class="tab-pane fade active in"> 
       <form class="form-group" method="post" action="#" enctype="multipart/form-data"> 
        <input class="form-control description" name="description[]" placeholder="Description here"> 
        <input class="btn btn-primary btn-lg" name="update" type="submit" value="Save"> 
       </form> 
      </div> 
      <div id="tab-2" class="tab-pane fade"> 

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

PHPは、フォームやアップデートデータベースをフェッチし、リダイレクト:

if(isset($_POST['update'])){ 
    //database update 

    //current url + tab 
    header("Location: {$url->getCurentUrl()}#tab3"); 
} 

リンクは正しいですが、タブは、URLで#tabを使用して更新されません、誰もがアクティブなタブを設定するための代替方法を持っています最後のタブを使用するには?

+0

してください、タブの郵便番号。 – mega6382

+1

あなたのHTMLにID「tab3」の要素がありません。 "tab-2"の下に何かがある場合、 " - "がありません。 – Felix

+2

ちょうど一般的なヒントですが、古典的な方法でフォームを送信する必要がない場合は、AJAXを使用して送信し、サイトやその他の状態を復元する必要はありません。 – xander

答えて

0

このコードの下に使用、それはとても私のためだとして...あなたに役立つかもしれない...

$('a[data-toggle="tab"]').on('show.bs.tab', function(e) { 
    localStorage.setItem('activeTab', $(e.target).attr('href')); 
}); 
var activeTab = localStorage.getItem('activeTab'); 
if(activeTab){ 
    $('#action-tab a[href="' + activeTab + '"]').tab('show'); 
} 
関連する問題