0

我正在使用以下代码在页面加载时在日期文本字段中显示日期或预加载日期。

$(function() {
    $("#datepicker").datepicker({
        dateFormat: "yy-mm-dd"
    }).datepicker("setDate", "0");
});

但我想跳过周末的周六和周日显示/预置日期字段。

请帮忙!

4

2 回答 2

1

有 beforeShowDay 选项,它需要为每个日期调用一个函数,如果允许该日期,则返回 true,否则返回 false。从文档:

演出前

该函数将日期作为参数,并且必须返回一个数组,其中 [0] 等于 true/false 指示此日期是否可选,1 等于 CSS 类名称或默认表示的 ''。在显示之前,它会在日期选择器中的每一天被调用。

在日期选择器中显示一些国定假日。

$(".selector").datepicker({ beforeShowDay: nationalDays})   

natDays = [
  [1, 26, 'au'], [2, 6, 'nz'], [3, 17, 'ie'],
  [4, 27, 'za'], [5, 25, 'ar'], [6, 6, 'se'],
  [7, 4, 'us'], [8, 17, 'id'], [9, 7, 'br'],
  [10, 1, 'cn'], [11, 22, 'lb'], [12, 12, 'ke']
];

function nationalDays(date) {
    for (i = 0; i < natDays.length; i++) {
      if (date.getMonth() == natDays[i][0] - 1
          && date.getDate() == natDays[i][1]) {
        return [false, natDays[i][2] + '_day'];
      }
    }
  return [true, ''];
}

存在一个名为 noWeekends 的内置函数,它可以防止选择周末。

$(".selector").datepicker({ beforeShowDay: $.datepicker.noWeekends })
To combine the two, you could do something like (assuming the nationalDays function from above):

$(".selector").datepicker({ beforeShowDay: noWeekendsOrHolidays})   

function noWeekendsOrHolidays(date) {
    var noWeekend = $.datepicker.noWeekends(date);
    if (noWeekend[0]) {
        return nationalDays(date);
    } else {
        return noWeekend;
    }
}

更新:请注意,从 jQuery UI 1.8.19 开始,beforeShowDay 选项还接受可选的第三个参数,即弹出工具提示

你也可以在假期使用它

于 2013-08-22T12:42:48.170 回答
0

据我了解,您不想显示周末日期。

  1. 从 datePicker获取当前日期。
  2. 使用date.getUTCDay()检查星期几
  3. 实现一个简单的if..else..条件来检查日期。
  4. .datepicker("destroy")将从附加的元素中删除日期选择器。

$(function () {
    $("#datepicker").datepicker({
        dateFormat: "yy-mm-dd"
    }).datepicker("setDate", "0");
    date = $("#datepicker").datepicker('getDate');
    var day = date.getUTCDay();
    if ((day == 0) || (day == 5)) {
        $('#datepicker').val('');  // reset the value of text fields
        $("#datepicker").datepicker("destroy"); //detach datepicker from element
    }
});

注意:getUTCDay根据通用时间返回指定日期的星期几,其中 0 表示星期日。

于 2013-08-22T13:06:35.477 回答