DateRangePicker - выбранный диапазон дат не выделяется правильно

$("input[name='MyDaterange']").daterangepicker({
  ranges: {
    'This Week': [moment().day("Sunday"), moment().day("Saturday")],
    'This Month': [moment().startOf('month'), moment().endOf('month')],
    'This Year': [moment().startOf('year'), moment().endOf('year')],
    'Year to Date': [moment().startOf('year'), moment()]
  },
  maxDate: moment() // this is required
});
<script type="text/javascript" src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css" />

<input type="text" name="MyDaterange" id="MyDaterange" value="" />

Я использую daterangepicker для выбора предопределенных дат. Когда я выбираю Год до даты, выделяется другой параметр Этот год.

  1. Как сделать активным только тот диапазон, на который нажали.
  2. Это ошибка с daterangepicker?

Код:

$("input[name='MyDaterange']").daterangepicker({
  ranges: {
    'This Week': [moment().day("Sunday"), moment().day("Saturday")],
    'This Month': [moment().startOf('month'), moment().endOf('month')],
    'This Year': [moment().startOf('year'), moment().endOf('year')],
    'Year to Date': [moment().startOf('year'), moment()]
  },
  maxDate: moment() // this is required
});

person Alvin    schedule 06.07.2018    source источник


Ответы (1)


Поскольку вы добавили maxDate: moment(), это означает, что все даты после сегодняшнего дня не учитываются, это означает:

  • когда вы выбираете «Этот год», вы получаете период с 01 января по сегодняшний день.
  • когда вы выбираете «Год до даты», вы получаете от 01 января до сегодняшнего дня.

Они одинаковы, и поскольку плагин проверяет дату начала и окончания для проверки диапазона активации, «Этот год» всегда будет активирован первым.

Решение:

  • удалите «в этом году», так как вы используете maxDate = сегодня, это не очень полезно
person Fetrarij    schedule 09.07.2018
comment
Спасибо, что взглянули на это. К сожалению, я не могу удалить эту опцию, потому что все эти опции являются стандартными для всех страниц моего веб-сайта. Мне было интересно, почему нельзя выбрать только тот диапазон (метку), который был нажат, а не выбрать 1-й. - person Alvin; 09.07.2018
comment
@Help Это код. взгляните на их код на github.com/dangrossman/daterangepicker/blob/master. / (L: с 1332 по 1336) . Почему вы используете maxDate до сегодняшнего дня? хоть завтра и все заработает. - person Fetrarij; 09.07.2018
comment
Пользователям не разрешено выбирать будущие даты, следовательно, maxDate сегодня. - person Alvin; 09.07.2018
comment
Таким образом, «с начала года» и «в этом году» означают одни и те же даты. - person Fetrarij; 09.07.2018
comment
Согласен с вами, но на некоторых экранах мы допускаем будущие даты, поэтому у нас есть стандартные варианты для всех экранов. Настоящая разница существует на тех экранах, где разрешена будущая дата. - person Alvin; 09.07.2018