如何在Jquery日期选择器中突出显示日期

时间:2018-08-14 23:13:11

标签: jquery datepicker

我想在“ jQuery日期”选择器中突出显示“几天”,所以我尝试了一些脚本,结果在Codepen.io上。但是我找不到错误,为什么日期不突出显示。

https://codepen.io/flipitart/pen/vawENB

NSRunningApplication *thisApp = [NSRunningApplication runningApplicationWithProcessIdentifier:getpid()];
NSLog(@"bundle URL: %@", [thisApp bundleURL]);

1 个答案:

答案 0 :(得分:1)

此CodePen中犯了一些错误。

看起来是从不同地方粘贴的代码,但不了解一些基本知识。

第一个是在 Ready包装器 AND 中包含一些代码,以便在同一元素上实例化日期选择器。由于DatePicker已被外部代码实例化,因此根本不应用内部代码。您必须将其他datepicker参数放在同一位置,该位置在作为参数传递的对象之间:$('#datepicker').datepicker({ -- HERE -- });

second 是一个对象的怪异用法,其中键与值相同...只是为了稍后检查它是否存在。为什么不存储简单的日期数组?

最后一个是关于如何比较datepicker使用的日期和数组中的日期。
这是一个有趣的问题

beforeShowDay选项是一个函数,该函数循环显示所有要渲染的日期。因此,在当月的“抽奖”中,它将在mont的所有28〜31天之间进行循环操作,并且在前后两天内进行。

在该循环中,您要检查日期是否在要突出显示的日期数组中。 .inArray()方法是确定这一点的不错选择。事情是将苹果与苹果进行比较...日期的格式必须与eventDates数组中的格式相同。

var dateToCompare = $.datepicker.formatDate("dd/mm/yy", date);

此行将格式化从日期选择器循环到日期对象到dd/mm/yy字符串的每个日期。

然后检查该日期是否在您的eventDates`数组中:

if( $.inArray(dateToCompare,eventDates) >-1 ) {

如果找到日期,它将返回true。现在,请记住我们处于循环中。我们必须return an a array of 3 values to datepicker,即:

  1. 可选日期(对/错)
  2. 要添加的类名
  3. 工具提示

您尝试过此操作:return [true, "event", highlight];。可以使用前两个值...但是highlight是一个日期对象,在这里应该是一个字符串。

这是一个有效的代码:

$(document).ready(function() {

  var eventDates = [
    "12/08/2018",
    "12/06/2014",
    "2/20/2014",
    "12/25/2014"
  ]
  console.log(eventDates);

  // Datepicker instantiation
  $('#datepicker').datepicker({
    beforeShowDay: function( date ) {

      var dateToCompare = $.datepicker.formatDate("dd/mm/yy", date);
      //console.log(dateToCompare);

      if( $.inArray(dateToCompare,eventDates) >-1 ) {
        console.log("A date from the array was FOUND.")
        return [true, "event",'This date is in the array!'];
      } else {
        return [true, '', ''];
      }
    },

    firstDay: 1,
    prevText: '<i class="fa fa-fw fa-angle-left"></i>',
    nextText: '<i class="fa fa-fw fa-angle-right"></i>',
    onSelect: function() {
      var dateText = $.datepicker.formatDate("MM dd, yy", $(this).datepicker("getDate"));
      $('p.bgText').text(dateText);
    }
  });  // End Datepicker instantiation


  // On load "layout" formattings 
  //
  //getting today's date
  var currentDate = $.datepicker.formatDate('MM dd, yy', new Date());
  $('#monthAndDate').text(currentDate);

  //setting bgText to current Date
  $('p.bgText').text("Select a date");

  var currentWeekday = $.datepicker.formatDate('DD', new Date());
  $('#dayOfWeek').text(currentWeekday);

});  //End ready

CodePen updated