【问题标题】:Disabling specific dates in jquery datepicker not working禁用jquery datepicker中的特定日期不起作用
【发布时间】:2016-07-25 01:29:27
【问题描述】:

我有一个日历需要禁用特定日期。

我使用 spiceforms.com/blog/how-to-disable-dates-in-jquery-datepicker-a-short-guide/ 上的代码作为示例来编写我的代码,它运行良好,但在某些时候它停止了工作,我找不到原因, 我的代码是:

function Disableentries(date) {
    // here I get an array of dates in yyyy-mm-dd format
    var datesarray = datesfromcalendar();

    var arraynoentry = datesarray[0];
    var m = date.getMonth();
    var d = date.getDate();
    var y = date.getFullYear();
    var currentdate = y + '-' + (m + 1) + '-' + d ;

    // We will now check if the date belongs to disabled dates array
    for (var i = 0; i < arraynoentry.length; i++) {
        // Now check if the current date is in disabled dates array.
        if (jQuery.inArray(currentdate, arraynoentry) != -1 ) {
            return [0];
        }else{
            return [1];
        }
    }
}

jQuery(function() {
    jQuery( "#edit-available-from-datepicker-popup-0-bloque" ).datepicker({
        minDate: 0,
        beforeShowDay: Disableentries,
        dateFormat: 'dd-mm-yy',
    });
});

由于这段代码,我禁用了一些日期,但它们不是数组中的日期。从 2016 年 10 月 29 日到 2016 年 12 月 31 日,我禁用了整个日历,然后当我的禁用日期如下图所示: calendar 1 calendar 2

¿代码或其他解决此问题的方法有什么问题吗?

编辑:函数 datesfromcalendar() 获取需要的日期 从图片中出现的日历中禁用。这是 代码:

function datesfromcalendar(){
  var arraynoentry= ['2000-01-15'];
  var arraynoexit= ['2000-01-16'];
  jQuery('.cal-month').each(function(){
    var month = jQuery(this).data("cal-month");
    var year = jQuery(this).data("cal-year");
    //alert(month);
    var noentry = jQuery(this).find('.cal-na-pm');
    var noexit = jQuery(this).find('.cal-na-am');
    jQuery.each(noentry,function(){
      var day = jQuery(this).text();
      arraynoentry.push(year + "-" + month + "-" + dia);
      //block entries
      //alert('hello');
    })
    jQuery.each(nosalida,function(){
      var day = jQuery(this).text();
      arraynoexit.push(year + "-" + month + "-" + dia);
      //block exits
      //alert('bye');
    })
  })
  var results = [arraynoentry,arraynoexit];
  return results;
}

【问题讨论】:

  • 也向我们展示你的功能datesfromcalendar()
  • 函数 datesfromcalendar 工作正常并返回我从图片中的日历中获得的禁用日期(我先检查了它),但无论如何我都会把它放在这里。

标签: javascript jquery datepicker calendar


【解决方案1】:

我找到了问题。

当我们将 1 与月份相加(将月份从 0 到 11 转换为从 1 到 12 的月份)时,结果是一个整数 (1,2,3 ... 10,11,12)。数组中的日期的月份为 01,02,03,(...) 格式,因此当我们比较时,只有 2 位数的月份返回正确的结果。

为了解决这个问题,我们必须更改月份格式以匹配数组中的月份格式,以便我们可以比较它们。 这段代码可以解决问题:

var currentdate = y + '-' + ('0'+(m + 1)).slice(-2) + '-' + d ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 2012-04-02
    • 2010-10-15
    • 1970-01-01
    • 2013-08-03
    • 2015-07-31
    • 1970-01-01
    相关资源
    最近更新 更多