E
E
Evgeny Karnaukhov2021-12-16 00:41:51
AJAX
Evgeny Karnaukhov, 2021-12-16 00:41:51

How to switch tabs without reloading pages?

Hello everyone, can you help me switch tabs without reloading the page, now I have the following code

//    Sort Form
    $('.js-submit-form').on('change', function () {
        $('#grid-posts-block').submit();
    });

});
$(function () {
  $('.tab-content:not(:first)').hide();
   $('#tabs-nav a').bind('click', function (e) {
    e.preventDefault();
    $this = $(this);
    $target = $(this.hash);
    $('#tabs-nav a.current').removeClass('current');
    $('.tab-content:visible').fadeOut("slow", function () {
        $this.addClass('current');
        $target.fadeIn("slow");
    });
  }).filter(':first').click();
});

Answer the question

In order to leave comments, you need to log in

1 answer(s)
N
Nadim Zakirov, 2021-12-16
@Jonil

Paste this html code on the page with tabs and you will be happy:

<script>
$(function() {
  
  // Ссылка на форму которую надо грузить без перезагрузки страницы:
  var form = $('form[action="https://dev.itlvl.com/nashi-raboty/"]');
  
  // Вешаем на поля формы обработчик кликов:
  
  form.find('input[type="radio"]').click(async function(e) {
    
    e.preventDefault(); // Предотвращаем клик
    form.css('pointer-events', 'none'); // Блокрируем повторные клики
    
    // Формируем ссылку на страницу которая содержит данные кликнутого таба:
    var link = 'https://dev.itlvl.com/nashi-raboty/?' + $(this).attr('name') + '=' + $(this).val();
    
    var request = $.ajax(link); // Запускаем процесс загрузкки этой страницы
    
    // Пока грузится, делаем плавное исчезновение текущего таба:
    await $('.grid-listing').animate({ opacity: 0 }, 500).promise();
    
    // Получаем те данные что загрузили и меняем URL в браузере:
    var html = await request; history.pushState(null, null, link);
    
    // Удаляем атрибут активности со всех полей:
    form.find('input[type="radio"]').removeAttr('checked');
    
    $(this).attr('checked', 'checked'); // Делаем активным текущий таб
    
    // Вставляем данные с нового таба на текущую страницу:
    
    var doc = new DOMParser().parseFromString(html, 'text/html');
    
    var html = $('.grid-listing', doc).html();
    $('.grid-listing').html(html);
    
    var html = $('.listing-page__pagination', doc).html();
    $('.listing-page__pagination').html(html);
    
    // Делаем плавное появление для вставленного контента:
    await $('.grid-listing').animate({ opacity: 1 }, 500).promise();
    
    form.css('pointer-events', ''); // Снимаем блокировку кликов
    
  });
  
});
</script>

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question