Выбор конкретных дней вместо диапазона
Здравствуйте!
Есть скрипт который позволяет выбрать диапазон дней для расчета программы питания
var firstDay = 0;
var lastDay = 6;
$('.builder-days-selector a').on('click', function(event) {
var active = $('.builder-days-selector').find('.active').length;
if (active === 0) {
$(event.target.closest('a')).addClass('active');
firstDay = $(event.target.closest('a')).attr('data-slide-index');
} else if (active === 1) {
lastDay = firstDay;
$(event.target.closest('a')).attr('data-slide-index') > firstDay
? lastDay = $(event.target.closest('a')).attr('data-slide-index')
: firstDay = $(event.target.closest('a')).attr('data-slide-index');
for (var i = firstDay; i <= lastDay; i++) {
$("a[data-slide-index=" + i + "]").addClass('active');
}
} else {
$('.builder-days-selector a').removeClass('active');
$(event.target.closest('a')).addClass('active');
firstDay = $(event.target.closest('a')).attr('data-slide-index');
lastDay = firstDay;
}
});
<div class="custom-pager builder-days-selector">
<a class="active" data-slide-index="0"> <!-- class = "active"-->
<span class="pager-title">
Пн
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="1">
<span class="pager-title">
Вт
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="2">
<span class="pager-title">
Ср
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="3">
<span class="pager-title">
Чт
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="4">
<span class="pager-title">
Пт
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="5">
<span class="pager-title">
Сб
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="6">
<span class="pager-title">
Вс
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
</div>
Как его переделать чтоб можно было выбирать только конкретные дни? Спасибо! |
max1985,
результат какой должен быть? |
Цитата:
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<style type="text/css">
.active{
background-color: rgba(255, 0, 0, 1);
color: rgba(255, 255, 255, 1);
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
</head>
<body>
<div class="custom-pager builder-days-selector">
<a class="active" data-slide-index="0"> <!-- class = "active"-->
<span class="pager-title">
Пн
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="1">
<span class="pager-title">
Вт
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="2">
<span class="pager-title">
Ср
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="3">
<span class="pager-title">
Чт
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="4">
<span class="pager-title">
Пт
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="5">
<span class="pager-title">
Сб
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="6">
<span class="pager-title">
Вс
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
</div>
<div class="out"></div>
<script>
$(function() {
var dayActive = [], parent = $('.builder-days-selector'), out = $('.out');
parent.on('click', 'a',function(event) {
event.preventDefault();
$(this).toggleClass('active');
var active = parent.find('.active');
dayActive = $.map(active, function(el) {
return $(el).data('slide-index')
})
out.text(dayActive)
});
parent.find('a:first').trigger('click').trigger('click');
});
</script>
</body>
</html>
|
Спасибо большое за помощь!
Визуально отображается как надо, но расчет не ведется. |
max1985,
Расчетом какой скрипт занимается? |
Видимо то что в самом вверху
т.к если поменять в скрипте и коде: builder-days-selector на builder-days-selector1 и data-slide-index на data-slide-index1 то все продолжает работать... |
max1985,
ждите телепатов |
Готов заплатить за доработку...
Необходимо чтоб получилось так https://prnt.sc/knrqo2 1. При нажатии на радиокнопку становятся активными элементы на против нее, а в противоположном блоке выбрать ничего нельзя и на всех элементах снимается active, пока не переключить радиокнопку. 2. Первый вариант выбирает диапозон, второй конкретные дни. 3. Должно работать на основании имеющегося скрипта. Сейчас у меня так:
<div class="row">
<form>
<div class="col-md-12 text-center builder-days-title">
<i class="fa fa-arrow-down"></i>
<span> Выбор диапазон расчета программы питания </span>
<i class="fa fa-arrow-down"></i>
</div>
<input type="radio" name="gender" id="Choice1" value="Choice1" checked>
<div class="col-md-12">
<div class="custom-pager builder-days-selector">
<a class="active" data-slide-index="0"> <!-- class = "active"-->
<span class="pager-title">
Пн
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="1">
<span class="pager-title">
Вт
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="2">
<span class="pager-title">
Ср
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="3">
<span class="pager-title">
Чт
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="4">
<span class="pager-title">
Пт
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="5">
<span class="pager-title">
Сб
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a class="active" data-slide-index="6">
<span class="pager-title">
Вс
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
</div>
</div>
<br /><br />
<div class="col-md-12 text-center builder-days-title">
<i class="fa fa-arrow-down"></i>
<span> Выбор конкретных дней для расчета программы питания </span>
<i class="fa fa-arrow-down"></i>
</div>
<input type="radio" name="gender" id="Choice2" value="Choice2">
<div class="col-md-12">
<div class="custom-pager builder-days-selector1">
<a data-slide-index1="0">
<span class="pager-title">
Пн
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a data-slide-index1="1">
<span class="pager-title">
Вт
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a data-slide-index1="2">
<span class="pager-title">
Ср
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a data-slide-index1="3">
<span class="pager-title">
Чт
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a data-slide-index1="4">
<span class="pager-title">
Пт
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a data-slide-index1="5">
<span class="pager-title">
Сб
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
<a data-slide-index1="6">
<span class="pager-title">
Вс
</span>
<span class="circle">
<span class="inner-circle"></span>
</span>
</a>
</div>
</div>
</form>
</div>
var firstDay = 0;
var lastDay = 6;
$('.builder-days-selector a').on('click', function(event) {
var active = $('.builder-days-selector').find('.active').length;
if (active === 0) {
$(event.target.closest('a')).addClass('active');
firstDay = $(event.target.closest('a')).attr('data-slide-index');
} else if (active === 1) {
lastDay = firstDay;
$(event.target.closest('a')).attr('data-slide-index') > firstDay
? lastDay = $(event.target.closest('a')).attr('data-slide-index')
: firstDay = $(event.target.closest('a')).attr('data-slide-index');
for (var i = firstDay; i <= lastDay; i++) {
$("a[data-slide-index=" + i + "]").addClass('active');
}
} else {
$('.builder-days-selector a').removeClass('active');
$(event.target.closest('a')).addClass('active');
firstDay = $(event.target.closest('a')).attr('data-slide-index');
lastDay = firstDay;
}
});
var firstDay = 0;
var lastDay = 6;
$('.builder-days-selector1 a').on('click', function(event) {
var active = $('.builder-days-selector1').find('.active').length;
if (active === 0) {
$(event.target.closest('a')).addClass('active');
firstDay = $(event.target.closest('a')).attr('data-slide-index1');
} else if (active === 1) {
lastDay = firstDay;
$(event.target.closest('a')).attr('data-slide-index1') > firstDay
? lastDay = $(event.target.closest('a')).attr('data-slide-index1')
: firstDay = $(event.target.closest('a')).attr('data-slide-index1');
for (var i = firstDay; i <= lastDay; i++) {
$("a[data-slide-index1=" + i + "]").addClass('active');
}
} else {
$('.builder-days-selector1 a').removeClass('active');
$(event.target.closest('a')).addClass('active');
firstDay = $(event.target.closest('a')).attr('data-slide-index1');
lastDay = firstDay;
}
});
|
max1985,
дело не в том что вы показали, а в Цитата:
|
| Часовой пояс GMT +3, время: 13:38. |