【问题标题】:Today date or already selected date on previous input not able to select今天日期或先前输入中已选择的日期无法选择
【发布时间】:2017-07-08 11:40:23
【问题描述】:

我正在为我们的应用程序使用 Daterangepicker。

创建多行程日期选择器组件(3 个输入字段)

  1. TripOne - 选择日期(例如:2 月 19 日)
  2. TripTwo - 必须从“TripOne”所选日期开始。
  3. TripThree - 必须从“TripTwo”选定日期开始。

以上一切正常。

但是,以下问题不适用于此插件。

  1. TripOne - 选择今天日期(不工作)
  2. TripTwo - 如果在 TripOne 上选择了 2 月 20 日,我无法在 TripTwo 上选择相同的 2 月 20 日。
  3. TripThree - 类似于 TripTwo。

JS:

var nowDate = new Date();
var today = new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate(), 0, 0, 0, 0);
var maxLimitDate = new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate()+360, 0, 0, 0, 0);

$('input[name="tripOne"]').daterangepicker({
    "autoApply": true,
    "autoUpdateInput": false,
    "singleDatePicker": true,
    "minDate": today,
    "maxDate": maxLimitDate,
    "locale": {
        format: 'DD MMM YYYY'
    }
    },function(start) {
      $("#tripOne").val(start.format('DD MMM YYYY'));
      $('#tripOne').parent().parent().removeClass('has-error');
      var returnTripStartDate = new Date(Date.parse(start));
      $('input[name="tripTwo"]').daterangepicker({
        "autoApply": true,
        "autoUpdateInput": false,
        "singleDatePicker": true,
        "minDate": returnTripStartDate,
        "maxDate": maxLimitDate,
        "locale": {
            format: 'DD MMM YYYY'
        }
      },function(end) {
            $("#tripTwo").val(end.format('DD MMM YYYY'));
            $('#tripTwo').parent().parent().removeClass('has-error');
            var returnTripStartDate2 = new Date(Date.parse(start));
            $('input[name="tripThree"]').daterangepicker({
            "autoApply": true,
            "autoUpdateInput": false,
            "singleDatePicker": true,
            "minDate": returnTripStartDate2,
            "maxDate": maxLimitDate,
            "locale": {
                format: 'DD MMM YYYY'
            }
            },function(end) {
                $("#tripThree").val(end.format('DD MMM YYYY'));
                $('#tripThree').parent().parent().removeClass('has-error');
            });
            $(function() {
                $('.calendar.right').show();
            });
      });
      $(function() {
        $('.calendar.right').show();
      });
      $('input[name="tripOne"]').on('apply.daterangepicker', function(ev, picker) {
        $(this).val(picker.startDate.format('DD MMM YYYY'));
      });
      $('input[name="tripTwo"]').on('apply.daterangepicker', function(ev, picker) {
        $(this).val(picker.startDate.format('DD MMM YYYY'));
      });
      $('input[name="tripThree"]').on('apply.daterangepicker', function(ev, picker) {
        $(this).val(picker.startDate.format('DD MMM YYYY'));
      });
    });
    $(function() {
        $('.calendar.right').show();
    });

Fiddle page view

【问题讨论】:

  • 您的开发控制台有没有可能出现错误?
  • 没有错误老板.. 唯一的逻辑是缺失的。无法在下一个输入字段中重新选择“已经选择的日期”或“今天的日期”。
  • 这是我最新更新的代码。 jsfiddle.net/jkenluv/z9tgdh7k/7

标签: jquery daterangepicker bootstrap-daterangepicker


【解决方案1】:

问题不在于日期选择器本身......你就是你使用它的方式。在您的代码中,每次您从行程 #1 日期选择器中选择某些内容时,它都会尝试影响第二个尝试影响第三个的内容:(

正确的方法:在您的文档ready 事件中初始化所有 3 个日期选择器。但是等等:您将如何根据您的逻辑更改每个日期选择器配置?

嗯,很简单:Change option dynamically in JQuery UI DatePicker fails

长话短说 - 每次更改日期选择器中的值时,更改下一个选择器配置:

function(start) 
{
    $("#tripOne").val(start.format('DD MMM YYYY'));

    // .....

    $('input[name="tripTwo"]').datepicker("destroy");

    $("#dteEnd").datepicker({
     // new options here - with your desired value
    });

    // ......

【讨论】:

  • 嗨。我在这里使用.. daterangepicker 插件。预期行为和更新代码jsfiddle.net/jkenluv/z9tgdh7k/7
  • 对不起.. 我对这种 daterangepicker 方法感到困惑。是否有可能获得一些小提琴页面?谢谢
猜你喜欢
  • 1970-01-01
  • 2017-07-07
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多