【问题标题】:Setting date range picker start date to blank将日期范围选择器开始日期设置为空白
【发布时间】:2016-07-15 01:03:30
【问题描述】:

我有一个基于 http://www.daterangepicker.com 的日期范围选择器的日期范围选择器,我想将开始日期设置为空。这将适用于我想做的事情。

我正在使用文本输入字段来获取日期

</span><input type="text" class="form-control" id="reservation" />

在网站上有一个设置“输入最初为空”的示例,但我无法让它工作。基本上我不知道在哪里设置它。

我的日期范围选择器在一个局部视图中,它被另一个视图调用。页面脚本设置在调用部分视图的视图中。在 daterangepicker.js 脚本中,我找到了这些行;

//default settings for options
        this.parentEl = 'body';
        this.element = $(element);
        this.startDate = moment().startOf('day');
        this.endDate = moment().endOf('day');
        this.minDate = false;
        this.maxDate = false;
        this.dateLimit = false;
        this.autoApply = false;
        this.singleDatePicker = false;
        this.showDropdowns = false;
        this.showWeekNumbers = false;
        this.timePicker = false;
        this.timePicker24Hour = false;
        this.timePickerIncrement = 1;
        this.timePickerSeconds = false;
        this.linkedCalendars = true;
        this.autoUpdateInput = true;
        this.ranges = {};

据我所知,它们是基于 moment.js 的。我尝试操纵this.startDate,但无法将其设置为空白值。使用this.startdate = null 使整个日期范围选择器停止工作,所以我想我需要类似于moment.js 的空日期。或者完全不同的东西。

谁能告诉我怎么做?

【问题讨论】:

    标签: javascript jquery momentjs bootstrap-daterangepicker


    【解决方案1】:
    autoUpdateInput: false
    
    function (chosen_date) {
        $('.form-datetime').val(chosen_date.format('YYYY-MM-DD'));
    }
    

    【讨论】:

    • 您的回答帮助了我,谢谢。但我认为应该做什么有点模糊。我能够使用它是因为我对 datapicker 的工作原理有一些经验。也许添加更多细节是个好主意。
    • 对于那些寻求通用解决方案的人,您也可以使用:$(this.element[0]).val(chosen_date.format('YYYY-MM-DD'));
    • 如果我设置 autoUpdateInput: false ,那么当我选择日期时它不会再次填充输入框。
    • 对不起,这个工程我的回调函数有问题。
    • 看不懂,能发完整行吗?
    【解决方案2】:

    输入最初为空

    <input type="text" name="datefilter" value="" />
    
    <script type="text/javascript">
    $(function() {
    
      $('input[name="datefilter"]').daterangepicker({
          autoUpdateInput: false,
          locale: {
              cancelLabel: 'Clear'
          }
      });
    
      $('input[name="datefilter"]').on('apply.daterangepicker', function(ev, picker) {
          $(this).val(picker.startDate.format('MM/DD/YYYY') + ' - ' + picker.endDate.format('MM/DD/YYYY'));
      });
    
      $('input[name="datefilter"]').on('cancel.daterangepicker', function(ev, picker) {
          $(this).val('');
      });
    
    });
    </script>
    

    //daterangepickers
                //moment.locale('tr');
                moment.locale("@SessionHelper.CurrentLanguageTwoChar");
    
                $(".date-control").daterangepicker({
                    singleDatePicker: true,
                    showDropdowns: true,                
                    //timePicker: true,
                    //timePicker24Hour: true,
                    //timePickerSeconds: true,
                    minYear: parseInt(moment().subtract(10, 'years').format('YYYY'),10),
                    maxYear: parseInt(moment().add(10, 'years').format('YYYY'), 10),
                    autoUpdateInput: false,                
                    singleClasses: "",
                    locale: {
                        //format: 'DD.MM.YYYY HH:mm:ss'
                        //format: 'DD.MM.YYYY'
                    }
                });
    
                $('.date-control').on('apply.daterangepicker', function (ev, picker) {
                    $(this).val(picker.startDate.format('L'));
                });
    
                $('.date-control').on('cancel.daterangepicker', function (ev, picker) {
                    $(this).val('');
                });
    

    http://www.daterangepicker.com/#example5

    https://github.com/dangrossman/daterangepicker/issues/815

    【讨论】:

      【解决方案3】:

      daterangepicker 包括 from dateto date 请将此代码设置为空白开始日期

      $('.form-datetime').daterangepicker({autoUpdateInput: false}, (from_date, to_date) => {
        console.log(from_date.toDate(), to_date.toDate());
        $('.form-datetime').val(from_date.format('DD/MM/YYYY') + ' - ' + to_date.format('DD/MM/YYYY'));
      });
      

      谢谢。

      【讨论】:

        【解决方案4】:

        我用这个解决了这个问题....我希望这个问题可以帮助你。 输入标签

        
            <div class="form-group">
                <label>Due date:</label>
                <div class="input-group">
                    <input type="text" 
                        class="form-control float-right" 
                        id="duetime"
                        name="due_time" 
                        autocomplete="off" 
                     />
                </div>
            </div>
        
        

        脚本

        <script>
         $(function(){
        
            $("#duetime").daterangepicker({
                autoUpdateInput: false,
                minYear: 1901,
                showDropdowns: true,
                singleDatePicker: true,
                timePicker: true,
                timePicker24Hour: false,
                timePickerIncrement: 05,
                drops: "up",
                locale: {
                    format: 'MM/DD/YYYY hh:mm A'
                }
            }).on("apply.daterangepicker", function (e, picker) {
                picker.element.val(picker.startDate.format(picker.locale.format));
            });
        
         });
        </script>
        

        注意:我从这个来源找到了这个https://github.com/dangrossman/daterangepicker/issues/815#issuecomment-493323964

        【讨论】:

          【解决方案5】:

          将日期范围选择器的默认值设置为空,

          在你的函数中将 autoUpdateInput 设置为 false

          自动更新输入:假,

          【讨论】:

          • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
          猜你喜欢
          • 2019-03-20
          • 1970-01-01
          • 1970-01-01
          • 2017-09-19
          • 2017-07-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多