Моя проблема заключается в следующем: у меня есть три навигационных вкладки:

<ul class="nav nav-tabs">
  <li class="active"><a data-toggle="tab" href="#menu1">Personendaten</a></li>
  <li><a data-toggle="tab" href="#menu2">Studienübersicht</a></li>
  <li><a data-toggle="tab" href="#menu3">Dokumente</a></li>
</ul>

<div class="tab-content">
  <div id="menu1" class="tab-pane fade in active">
  <!-- some code here -->
  </div>
  <div id="menu2" class="tab-pane">
    <!-- some code here -->
  </div>
  <div id="menu2" class="tab-pane">
    <!-- some code here -->
  </div>
 </div>
/** A solution I found on the internet */
// Javascript to enable link to tab
    var url = document.location.toString();
    if (url.match('#')) {
        $('.nav-tabs a[href="#' + url.split('#')[1] + '"]').tab('show');
    } 

    // Change hash for page-reload
    $('.nav-tabs a').on('shown.bs.tab', function (e) {
        window.location.hash = e.target.hash;
    })

Внутри каждого меню есть сообщение, которое вызывает файл php, который передает некоторые данные сообщений из меню 1 в меню 2 и из меню 2 в меню 3 по URL-адресу.

Моя проблема в том, что когда я позвонил http://example.com/page.php#menu2 < / a> это не сработало. С помощью кода JavaScript, который я нашел в Интернете, URL-адрес показывает # menu2 при нажатии на эту вкладку.

Моя цель - вызвать из файла php, который вызывается после формы menu1 на windows.location на новую вкладку. На самом деле я начал так: window.location = "/ html / pages / page.php # menu2? Variable1 = 'blabla';

Но windows.location открывает только page.php, а не конкретную вкладку.

Я обнаружил, что когда я меняю URL, нажимаю ввод, ничего не меняется. Но когда я меняю URL-адрес, нажимаю клавишу ВВОД И перезагружаю страницу, все работает. Итак, могу ли я, вероятно, использовать location.reload (); где достичь моей цели?

Я не понимаю, почему бутстрап не работает ... или есть какое-то простое решение, которого я не знаю?

1
RoMaTiX99 30 Июн 2016 в 10:38

1 ответ

Лучший ответ
if (url.match('#')) {
    $('.nav-tabs a[href="#' + url.split('#')[1] + '"]').tab('show');
} 

Этот код работает нормально. Используя url.split ('#'), вы разделяете URL-адрес на '#'. Итак, если вы сделаете это:

window.location="/html/pages/page.php#menu2?variable1='blabla';

У вас будет:

$('.nav-tabs a[href="#menu2?variable1='blabla'"]').tab('show');

Возможно, поэтому это не работает, вам следует изменить свой URL на: page.php? Variable1 = 'blabla' # menu2

0
Nordine 30 Июн 2016 в 12:00