for文をfor文に組み込む試みを反映するためにコードを更新します。2番目のfor文を関数に追加
function unavailableDays(date) {
//date array to be disabled
var disabledDays = ["1963-3-31", "1965-9-18", "1965-9-19",
"1965-10-2", "1965-10-3", "1965-10-9", "1965-10-10"];
var yy = date.getFullYear(), mm = date.getMonth(), dd = date.getDate();
for (i = 0; i < disabledDays.length; i++) {
if($.inArray(yy + '-' + (mm+1) + '-' + dd,disabledDays) != -1 || new Date() < date) {
return [false];
}
}
return [true];
//date range to be disabled
var first = new Date("1978-8-10");
var last = new Date("1978-11-05");
var unavailableRange = [];
var yy = date.getFullYear(), mm = date.getMonth(), dd = date.getDate();
for(j = first; j < last; j.setDate(j.getDate() + 7)){
if($.inArray(yy + '-' + (mm+1) + '-' + dd,unavailableRange) != -1 || new Date() < date) {
return [false];
}
}
return [true];
}
私は日付を無効にするには、日付ピッカーでbeforeShowDayでそれを使用できるように、以下のunavailableDays関数に日付の範囲で、この初期の変数を組み込むしようとしています。私は別の関数を作成しようとしましたが、beforeShowDateでは機能しませんでしたので、内部にある必要があると思います。
var first = new Date("1978-08-10");
var last = new Date("1978-11-05");
var dates = [];
for (var i = first; i < last; i.setDate(i.getDate() + 7))
dates.push(new Date);
var disabledDays = ["1963-2-17", "1963-2-24", "1963-3-3", "1963-3-10", "1963-3-17", "1963-3-24", "1963-3-31", "1965-9-18", "1965-9-19", "1965-10-2", "1965-10-3", "1965-10-9", "1965-10-10"];
function unavailableDays(date) {
var yy = date.getFullYear(),
mm = date.getMonth(),
dd = date.getDate();
for (i = 0; i < disabledDays.length; i++) {
if ($.inArray(yy + '-' + (mm + 1) + '-' + dd, disabledDays) != -1 || new Date() < date) {
return [false];
}
}
return [true];
}
$(document).ready(function() {
$('.selector').datepicker({
inline: true,
dateFormat: 'yy-mm-dd',
constrainInput: true,
changeYear: true,
changeMonth: true,
gotoCurrent: true,
minDate: new Date(1962, 1 - 1, 1),
//months are index-based(1-1)
maxDate: new Date(2011, 10 - 1, 24),
yearRange: '-60y',
beforeShowDay: unavailableDays,
onSelect: function (dateText, inst) {
$("#img").attr("src", "http://www.example.com" + dateText + ".jpg");
var chosenDates = $.datepicker.parseDate('yy-mm-dd', dateText);
var backToString = $.datepicker.formatDate('MM dd' + ',' + ' yy', chosenDates);
$('.info').html('You are viewing:' + '<br />' + backToString);
}
});
ブーリアンとして評価されるとき、 '[false]'と '[true]'は両方とも常に 'true'です。そこに配列を返します。 – Pointy