Подтвердить что ты не робот

JQuery UI, переход на новую вкладку программно

Я создаю "check-out", например, взаимодействие с вкладками пользовательского интерфейса jQuery. Это означает, что щелчок кнопки на первой вкладке деактивирует первую вкладку и переместится к следующей. Я расчесывал сообщения в Stack Overflow, но ничего, что я пытаюсь, кажется, работает. Я использую jQuery UI 1.8, вот код:

  <script type="text/javascript">
  $(document).ready(function() {
    var $tabs = $('#tabs').tabs({ selected: 0 }); 
    $tabs.tabs('option', 'selected', 0);
    $("#tabs").tabs({disabled: [1,2]});
    $("#addstudent").click(function(){
        $tabs.tabs('option', 'selected', 1);
        $("#tabs").tabs({disabled: [0,2]});
    }); 
    $("#confirm").click(function(){
        $tabs.tabs('option', 'selected', 2);
        $("#tabs").tabs({disabled: [0,1]});
    }); 
  });
  </script>

<div id="tabs">
    <ul>
        <li><a href="#fragment-1">Student Information</a></li>
        <li><a href="#fragment-2">Confirmation</a></li>
        <li><a href="#fragment-3">Invoice</a></li>
    </ul>
    <div id="fragment-1">
        <button id="addstudent" >Add Student</button>
    </div>
    <div id="fragment-2">
        <button id="confirm" >Confirm</button>
    </div>
    <div id="fragment-3">
        tab 3, index 2
    </div>
</div>

Когда я нажимаю кнопки, следующая вкладка разблокируется (в том, что она выбирается), но она не отключает вкладку с индексом 0 и переключается на вкладку с индексом 1. Кроме того, соответствующая панель не отображается.

4b9b3361

Ответ 1

Попробуйте изменить свой код на это:

var $tabs = $('#tabs').tabs({ selected: 0, disabled: [1,2] }); 
$("#addstudent").click(function(){
   $tabs.tabs('enable', 1).tabs('select', 1).tabs('disable', 0);        
}); 
$("#confirm").click(function(){
    $tabs.tabs('enable', 2).tabs('select', 2).tabs('disable', 1);    
}); 

Пример JSBin

Ответ 2

Для JQUERY UI 1.9+ метод выбора устарел (http://jqueryui.com/upgrade-guide/1.9/#deprecated-select-method)

(из документации)

Старый API:

// Activate the third tab (zero-based index)
$( "#tabs" ).tabs( "select", 2 );

Новый API:

// Activate the third panel
$( "#tabs" ).tabs( "option", "active", 2 );

Ответ 3

@Аарон Шерман уже ответил на ваш вопрос. Вот подробный шаг.

Вот часть кода JS:

$(document) .ready(function() {
    $("#tabs").tabs(); 
    $(".btnNext").click(function () {
            $( "#tabs" ).tabs( "option", "active", $("#tabs").tabs('option', 'active')+1 );
        });
        $(".btnPrev").click(function () {
            $( "#tabs" ).tabs( "option", "active", $("#tabs").tabs('option', 'active')-1 );
        });
});

Вот теги "href", которые нужно добавить в свои вкладки div

Пример:

<div id="tabs-1">
<a class="myButton btnNext" style="color:white;">Next Tab</a>
</div>
<div id="tabs-2">
<a class="myButton btnPrev" style="color:white;">Previous Tab</a>
<a class="myButton btnNext" style="color:white;">Next Tab</a>
</div>
<div id="tabs-3">
<a class="myButton btnPrev" style="color:white;">Previous Tab</a>
</div>

Ответ 4

$(function() {
    $( "#tabs" ).tabs({ activate: function(event ,ui){
                    //console.log(event);
                    //alert(  ui.newTab.index());
        //alert( ui.newTab.attr('li',"innerHTML")[0].getElementsByTagName("a")[0].innerHTML);

        alert( ui.newTab[0].getElementsByTagName("a")[0].innerHTML);
        //alert( this.text);
                } });






    });

Ответ 5

Я изменил решение @Mahesh Vemuri, добавив возможность отключить шаги, следующие за первым, а затем включить их после нажатия кнопки "СЛЕДУЮЩИЙ":

JScode:

$(document) .ready(function() {
    $("#tabs").tabs(); 

    $("#tabs").tabs( "option", "disabled", [ 1, 2 ] );

    $(".btnNext").click(function () {
        $("#tabs").tabs( "enable", $("#tabs").tabs('option', 'active')+1 );
        $("#tabs").tabs( "option", "active", $("#tabs").tabs('option', 'active')+1 );
    });

    $(".btnPrev").click(function () {
        $("#tabs").tabs( "option", "active", $("#tabs").tabs('option', 'active')-1 );
    });
});

HTML тот же самый.

PS: Обратите внимание, что с помощью этого кода нажатие кнопки NEXT включает следующую вкладку (ранее отключенную), но нажатие кнопки PREV не отключает текущую вкладку, чтобы позволить пользователю перейти назад и вперед в последовательный поток до следующей заблокированной вкладки.

Будем надеяться, что если вкладки содержат 3 шага формы, действие кнопки NEXT может быть запущено только в случае успеха JS Form Validation.