带有ajax的JQuery中的插件datetimepicker出错

时间:2017-05-22 09:47:19

标签: jquery datetimepicker bootstrap-datetimepicker eonasdan-datetimepicker

我尝试这样做,禁用所有日期并启用我通过参数

传递的日期

此代码不起作用

$.ajax({
    method: "GET",
    url: "url",
})
.success(function(msg) {
    console.log(JSON.parse(msg));
    var disableIni = JSON.parse(msg);

    var disable = [];

    for (var i = 0; i < disableIni.length; i++)
    {
        disable[i] = moment(disableIni[i][0] + "/" + disableIni[i][1] + "/" + disableIni[i][2], "M/DD/YYYY");
        if (i > 5)
        {
            break;
        }
    }

    console.log(disable);

    var vectorTest = [moment("5/25/2017", "M/DD/YYYY"), moment("5/26/2017", "M/DD/YYYY"), moment("5/27/2017", "M/DD/YYYY")];

    console.log(vectorTest);

    var vector = disable;
    console.log(vector);

    $('#input_from').datetimepicker({
        locale: 'es',
        format: 'DD-MM-YYYY',
        enabledDates: $.each(vector, function(i, value) {
            return value;
        })
    });
});

但如果我为var vector = disable更改var vector = vectorTest,请正确使用:

$.ajax({
    method: "GET",
    url: "url",
})
.success(function(msg) {
    console.log(JSON.parse(msg));
    var disableIni = JSON.parse(msg);

    var disable = [];

    for (var i = 0; i < disableIni.length; i++)
    {
        disable[i] = moment(disableIni[i][0] + "/" + disableIni[i][1] + "/" + disableIni[i][2], "M/DD/YYYY");
        if (i > 5)
        {
            break;
        }
    }

    console.log(disable);

    var vectorTest = [moment("5/25/2017", "M/DD/YYYY"), moment("5/26/2017", "M/DD/YYYY"), moment("5/27/2017", "M/DD/YYYY")];

    console.log(vectorTest);

    var vector = vectorTest;
    console.log(vector);

    $('#input_from').datetimepicker({
        locale: 'es',
        format: 'DD-MM-YYYY',
        enabledDates: $.each(vector, function(i, value) {
            return value;
        })
    });
});

我可以做到这一点吗?

修改

ajax回复:

enter image description here

这是一个包含3个位置的其他数组的数组。 [0] =&gt;月,[1] =&gt;日,[2] =&gt;年

由于

2 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

$.ajax({
  method: "GET",
  url: "url",
  dataType: "json",
  success: function(response){
    var disable = [];
    for(var i=0; i<response.length; i++){
      var data = response[i];
      disable.push( moment([ data[2], data[0], data[1] ]) );
    }

    $('#input_from').datetimepicker({
      locale: 'es',
      format: 'DD-MM-YYYY',
      enabledDates: disable
    });
  }
});

您可以使用jQuery.ajaxsuccessdataType键。

然后,您可以使用moment(Array)方法循环结果并构建一组时刻对象,并将其传递给datetimepicker的enabledDates选项。

答案 1 :(得分:1)

您可以使用beforeShowDay,该函数将日期作为参数,并且必须返回一个数组:

  • [0]:true / false表示此日期是否可选
  • [1](可选):要添加到日期的单元格中的CSS类名称或&#34;&#34;对于默认演示文稿
  • [2](可选):此日期的弹出工具提示

在日期选择器之前,每天都会调用该函数 显示。

请参阅以下内容:

&#13;
&#13;
var availableDates = [[2017,6,1],[2017,6,2],[2017,6,5]];

function available(date) {
  t = [date.getDate(),(date.getMonth()+1),date.getFullYear()];
  var result = $.grep(availableDates, function(v,i) {
    return v[0]===t[2] && v[1]===t[1] && v[2]===t[0];
  }).length > 0;
  return [result];
}

$('#date').datepicker({ beforeShowDay: available });
&#13;
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<p>Date: <input type="text" name="date" id="date" readonly="readonly" size="12" />
&#13;
&#13;
&#13;

在上面的代码中,您可以通过修改布尔条件从启用/禁用切换:

length > 0而不是length == 0

我希望它可以帮助你,再见。