【问题标题】:How to Clear Input for Bootstrap DateRangePicker Field如何清除 Bootstrap DateRangePicker 字段的输入
【发布时间】:2016-07-20 19:22:03
【问题描述】:

使用 Bootstrap DateRangePicker Jquery 插件,为了帮助处理手动输入问题,我将日期字段设置为只读并使用创建的范围,用户应该从中选择他们想要的。像这样的..

// set datepicker
    function cb(start, end) {
            $('#daterange input').val(start.format('Do MMM YYYY') + ' - ' + end.format('Do MMM YYYY'));
    }
   
    $('#daterange').daterangepicker({
        autoApply: true,
        autoUpdateInput:true, 
        ranges: [
           'Today': [moment(), moment()],
           'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
           'This Week': [moment().startOf('week'), moment()],
           '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')]
        }
    }, cb);

问题是,我如何清除该字段的内容,因为它是只读的并且在日期选择器的界面上不存在执行此操作的按钮?

在 dararange picker 的官方网站上,他们以某种方式提供了一个轻微的解决方案,即当单击“取消”按钮时,您可以附加一个清除日期字段的事件。

$('#daterange').daterangepicker({
locale: { cancelLabel: 'Clear' }
});  
$('#daterange').on('cancel.daterangepicker', function(ev, picker) {
  //do something, like clearing an input
  $('#daterange').val('');
});

但这不是我打算做的。清除和取消以及有效的操作。那么现在,我该怎么做呢?

【问题讨论】:

    标签: bootstrap-daterangepicker


    【解决方案1】:

    我就是这样做的:我在现有范围的顶部添加了一个名为“无”的范围,单击该范围会清除该字段。传递给范围的值是两个空值,在 cb 函数(或您用来操作字段的任何函数)上,我检查传递的日期是否有效,我清除字段失败(无效表示传递了 Null,或者单击了“None”。)。

    <script>
    // set datepicker
        function cb(start, end) {
            if(start._isValid && end._isValid)
            {
                $('#daterange input').val(start.format('Do MMM YYYY') + ' - ' + end.format('Do MMM YYYY'));
            }
            else
            {
                $('#daterange input').val('');
            }
        }
    
        $('#daterange').daterangepicker({
            autoApply: true,
            autoUpdateInput:true, 
            ranges: {
                'None': [null,null],
               'Today': [moment(), moment()],
               'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
               'This Week': [moment().startOf('week'), moment()],
               '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')]
            }
        }, cb);
    </script>
    

    【讨论】:

    • 这不起作用..插件将在所有日历日显示NAN,其状态将为Invalid date
    • 我已经对其进行了测试并且它正在工作,实际上这是我当时使用的。鉴于那是在 2016 年 4 月,可能不再与 never 版本兼容
    • 感谢您的回复。我认为您应该编辑答案和问题以提及版本
    猜你喜欢
    • 1970-01-01
    • 2013-07-25
    • 2017-09-12
    • 2021-09-27
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多