te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>Javascript Date Range Picker - Single Calendar for Range Selection - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Javascript Date Range Picker - Single Calendar for Range Selection - Stack Overflow

programmeradmin5浏览0评论

I'm using this date range picker ponent: / and by default the widget shows two calendars. I would like to show only one calendar and be able to use the < > buttons to select next/previous months when selecting start and end dates i.e., be able to select a start date in January (showing only January) and then select an end date in March (showing only March), by clicking the > button. There is an option for singleDatePicker: true, but this disables the ability to select a range of dates.

I'm using this date range picker ponent: http://www.daterangepicker./ and by default the widget shows two calendars. I would like to show only one calendar and be able to use the < > buttons to select next/previous months when selecting start and end dates i.e., be able to select a start date in January (showing only January) and then select an end date in March (showing only March), by clicking the > button. There is an option for singleDatePicker: true, but this disables the ability to select a range of dates.

Share Improve this question asked Jan 20, 2017 at 18:18 neridajneridaj 2,1939 gold badges32 silver badges63 bronze badges 2
  • Were you able to fix this ? tried belwos answer but didnt work – Tyra Pululi Commented Aug 15, 2018 at 9:56
  • May be this tutorial helpful: How to create Single Calendar for Range selection in DateRangePicker – Fefar Ravi Commented Feb 7, 2022 at 6:53
Add a ment  | 

5 Answers 5

Reset to default 5

Code to remove second calendar for: http://www.daterangepicker. Will be able to select a date range within one calendar.

/* REMOVE SECOND CALENDAR */

.daterangepicker .drp-calendar.right {
    position: absolute !important;
    right: 0 !important;
    top: 0 !important;
}

.daterangepicker .drp-calendar.right tbody {
    display: none !important;
}

.daterangepicker .drp-calendar.right thead > tr:nth-child(2) {
    display: none !important;
}

.daterangepicker .drp-calendar.right th.month {
    display: none !important;
}

.daterangepicker .drp-calendar.right .calendar-table {
    background: transparent !important;
}

.daterangepicker .daterangepicker.ltr .ranges, .daterangepicker.ltr .drp-calendar {
    float: none !important;
}

.daterangepicker .drp-calendar.right .daterangepicker_input {
    position: absolute !important;
}

/* REMOVE SECOND CALENDAR */

I was also having the same problem but overe it with adding some css in it, hope it also helps you.

.drp-calendar.right thead>tr:nth-child(2) {
    display: none;
}
.drp-calendar.right tbody {
    display: none;
}
.daterangepicker.ltr .ranges, .daterangepicker.ltr .drp-calendar {
    float: none !important;
}
.daterangepicker .drp-calendar.right .daterangepicker_input {
    position: absolute;
    top: 45px;
    left: 8px;
    width: 230px;
}
.drp-calendar.left .drp-calendar-table {
    margin-top: 45px;
}

You can use a hack to enable range selection in just one calendar:

To insert just one calendar and works well you have to hidden the second calendar:

$(function() {
  $('input[name="daterange"]').daterangepicker({
    "autoapply": true
  });

  $('.drp-calendar.right').hide();
  $('.drp-calendar.left').addClass('single');
});

Now we have a problem... Always you tap on calendar the 'view' will be update, so to show the next month arrow, you have to add this code:

$('.calendar.table').on('DOMSubtreeModified', function() {
  var el = $(".prev.available").parent().children().last();
  if(el.hasClass('next available')) { return; }
    el.addClass('next available');
    el.append('<span></span>');
});

Note: There may be better ways to do it, but this is the one I found.

$(function() {
  $('input[name="daterange"]').daterangepicker({
    "autoapply": true
  });
  $('.drp-calendar.right').hide();
  $('.drp-calendar.left').addClass('single');

  $('.calendar-table').on('DOMSubtreeModified', function() {
    var el = $(".prev.available").parent().children().last();
    if (el.hasClass('next available')) {
      return;
    }
    el.addClass('next available');
    el.append('<span></span>');
  });
});
<script type="text/javascript" src="https://cdn.jsdelivr/jquery/latest/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr/momentjs/latest/moment.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr/npm/daterangepicker/daterangepicker.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr/npm/daterangepicker/daterangepicker.css" />
<input type="text" name="daterange" value="01/01/2018 - 01/15/2018" />

I have found a solution for Single Calendar. Embedded calendar with range selection.

 var picker = $('#daterangepicker1').daterangepicker({
            "parentEl": "#daterangepicker1-container",
            "autoApply": true,
            "linkedCalendars": false,
        });
        // range update listener
        picker.on('apply.daterangepicker', function (ev, picker) {
            $("#daterangepicker-result").html('Selected date range: ' + picker.startDate.format('YYYY-MM-DD') + ' to ' + picker.endDate.format('YYYY-MM-DD'));
        });
        // prevent hide after range selection
        picker.data('daterangepicker').hide = function () { };
        // show picker on load
        picker.data('daterangepicker').show();

          $('.drp-calendar.right').hide();
            $('.drp-calendar.left').addClass('single');

        $('.calendar.table').on('DOMSubtreeModified', function () {
                var el = $(".prev.available").parent().children().last();
                if (el.hasClass('next available')) { return; }
                el.addClass('next available');
                el.append('<span></span>');
            });
.embedded-daterangepicker .daterangepicker::before,
.embedded-daterangepicker .daterangepicker::after {
  display: none;
}
.embedded-daterangepicker .daterangepicker {
  position: relative !important;
  top: auto !important;
  left: auto !important;
  float: left;
  width: auto !important;
  margin-top: 0;
}
.embedded-daterangepicker .daterangepicker .drp-calendar {
  width: 50%;
  max-width: 50%;
}
<!DOCTYPE html>
<html>

<head>
 <script type="text/javascript" src="https://cdn.jsdelivr/momentjs/latest/moment.min.js"></script>
  <script type="text/javascript" src="https://cdn.jsdelivr/npm/daterangepicker/daterangepicker.min.js"></script>
    <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr/npm/daterangepicker/daterangepicker.css" />
    <script src="https://cdnjs.cloudflare./ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <link href="https://stackpath.bootstrapcdn./bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
</head>

<body>
  <div class="row">
  <div class="col-md-10 offset-md-1">
    <h3>Embedded DateRangePicker with Single Calendar</h3>
    <p id="daterangepicker-result">Selected date range:</p>
    <input id="daterangepicker1" type="hidden">
    <div id="daterangepicker1-container" class="embedded-daterangepicker"></div>
  </div>
</div>

<script type="text/javascript" src="https://cdn.jsdelivr/momentjs/latest/moment.min.js"></script>
    <script type="text/javascript" src="https://cdn.jsdelivr/npm/daterangepicker/daterangepicker.min.js"></script>
    <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr/npm/daterangepicker/daterangepicker.css" />
    <script
        src="https://dev.admin.desktop.myhealthcare.co/vendor/formvalidation/js/framework/bootstrap.min.js"></script>
</body>
</html>

in Date Range Picker. Please checkout my fiddle:

https://jsfiddle/sarfarazmalik/fdjo37ce/10/

/* REMOVE SECOND CALENDAR */ .daterangepicker .drp-calendar.right {
    position: absolute;
    right: 0;
    top: 0; }

.daterangepicker .drp-calendar.right tbody {
    display: none; }

.daterangepicker .drp-calendar.right thead>tr:nth-child(2) {
    display: none; }

.daterangepicker .drp-calendar.right th.month {
    display: none; }

.daterangepicker .drp-calendar.right .calendar-table {
    background: transparent; }

.daterangepicker .daterangepicker.ltr .ranges, .daterangepicker .daterangepicker.ltr .drp-calendar {
    float: none; }

.daterangepicker .drp-calendar.right .daterangepicker_input {
    position: absolute;
    right: 0; }

/* REMOVE SECOND CALENDAR */
发布评论

评论列表(0)

  1. 暂无评论