【问题标题】:Date Range Picker (JavaScript Component for Bootstrap) picks the wrong date on specific day日期范围选择器(Bootstrap 的 JavaScript 组件)在特定日期选择错误的日期
【发布时间】:2016-11-21 03:13:38
【问题描述】:

目前我一直在使用我不是作者的代码,并且用户发现了一个非常具体的问题,我根本找不到答案。

相关页面使用Date Range Picker 组件选择两个日期(开始和结束)。

每当有人在16/10/2016 当天专门点击它时,它就会自动转移到17/10/2016

这在多台计算机和浏览器中测试无效,我也无法通过调试器追踪问题。

任何其他日期、任何月份、任何年份,都不会出现任何问题。它只发生在16/10/2016 那天,并且只有当该日期是结束日期时,它才可以是没有问题的开始日期。

当前版本:2.1.24

这里是使用的代码:

<section class="col-md-4"> <!-- Selecionar Datas-->
    <div class="form-group has-feedback has-feedback-right">
        <input type="hidden" id="dt_inicio_afastamento">
        <input type="hidden" id="dt_fim_afastamento">
        <label class="control-label">Escolha o intervalo de datas</label>
        <i class="form-control-feedback glyphicon glyphicon-calendar"></i>
        <input id="escolhe_data" name="escolhe_data" class="input-mini form-control" type="text">
    </div>
</section>

还有脚本:

    $('input[name="escolhe_data"]').daterangepicker({
        showDropdowns: true,
        autoApply: true,
        autoUpdateInput: true,
        locale: {
            "format": "DD/MM/YYYY",
            "separator": " - ",
            "applyLabel": "Aplicar",
            "cancelLabel": "Cancelar",
            "fromLabel": "De",
            "toLabel": "Até",
            "customRangeLabel": "Outro",
            "weekLabel": "S",
            "daysOfWeek": ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab"],
            "monthNames": ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" ],
            "firstDay": 1
        },
        alwaysShowCalendars: true
    },
    function(start, end, label) {
      //console.log($('#escolhe_data').data());

    });

    $('#escolhe_data').on('apply.daterangepicker', function(ev, picker) {
        $('#dt_inicio_afastamento').val(picker.startDate.format('YYYY-MM-DD'));
        $('#dt_fim_afastamento').val(picker.endDate.format('YYYY-MM-DD'));
    });

【问题讨论】:

  • 您的最后一个输入不应有结束输入语句。那是一回事。
  • 是的,谢谢你的注意,norcal,虽然这并没有改变代码的行为。
  • 不,它没有,但它对我来说很突出。你能提供一个jsfiddle吗?
  • 我真的不知道怎么做,组件有超过 1500 行,没有它代码将无法工作。

标签: javascript jquery twitter-bootstrap daterangepicker


【解决方案1】:

根据 chiliNUT 发布的链接,我能够查明问题所在。 这与夏令时的结束有关。 让用户选择小时以及解决问题。 这可以使用选项"timePicker": true 来完成 在$().daterangepicker({ }) 配置中。

感谢 chiliNUT 和所有提供帮助的人!

【讨论】:

  • 很高兴我的链接有帮助! javascript 中的日期对我来说是工作中一直存在的烦恼来源:)
【解决方案2】:

要添加到这个..以防它有帮助,但我做了 OP 答案 +1。

您还可以添加其他一些功能。不使用自动更新,即使设置错误时区也不会影响它。

$(function() {
    $('input[name="escolhe_data"]').daterangepicker({
        timePicker: true,
        timePickerIncrement: 30,
        locale: {
            format: 'MM/DD/YYYY h:mm A'
        },
        ranges: {
           'Today': [moment(), moment()],
           'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
           'Last 7 Days': [moment().subtract(6, 'days'), moment()],
           'Last 30 Days': [moment().subtract(29, 'days'), moment()],
           'This Month': [moment().startOf('month'), moment().endOf('month')],
           'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
        }
    });

    $(window).scroll(function() {
        if ($('input[name="daterange"]').length) {
            $('input[name="daterange"]').daterangepicker("close");
      }
    });
});

演示:https://jsfiddle.net/norcaljohnny/kensoubf/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 2014-08-28
    • 2020-06-11
    • 1970-01-01
    • 2023-04-05
    • 2020-10-05
    相关资源
    最近更新 更多