문제

jQuery UI DatePicker를 설정하여 예정된 특정 날의 선택을 허용하지 않도록하는 (쉬운) 방법이 있습니까?

나는 얻을 수 있었다 이 접근법 그러나 작동하면 널 오류가 발생하여 IE에 표시되지 않습니다.

'Natdays [...]. 0'은 널 또는 물체가 아닙니다.

미리 감사드립니다!

업데이트: 코드가 포함되어 있으면 도움이 될 수 있습니다. 어쨌든,이 중 대부분은 앞서 언급 한 스레드에서 바로 가져 왔습니다.

natDays = [
        [7, 23], [7, 24], [8, 13], [8, 14], 
    ];

    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, ''];
    }

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


    $(function() { 
        $("#datepicker").datepicker({
            inline: true,
            minDate: new Date(2009, 6, 6), 
            maxDate: new Date(2009, 7, 14), 
            numberOfMonths: 2, 
            hideIfNoPrevNext: true,
            beforeShowDay: $.datepicker.noWeekends,
            altField: '#alternate',
        }); 
    });

다시 한 번 감사드립니다!

도움이 되었습니까?

해결책

'var'키워드를 앞에 올바르게 선언 해 보셨습니까?

또한 - Natdays 정의가 끝날 때 추가 쉼표가 있습니다.

Natdays [i] [2]는 배열에 2 개의 항목 만 가지고 있으므로 작동하지 않습니다.

또한 Beforeshowday 함수 이름을 올바르게 설정하려고합니다. 사용자 정의 기능을 호출하는 것처럼 보이지 않습니다.

다른 팁

다음은 특정 날짜를 선택하여 비활성화하는 방법입니다.

var unavailableDates = ["9-5-2011","14-5-2011","15-5-2011"];

function unavailable(date) {
  dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear();
  if ($.inArray(dmy, unavailableDates) < 0) {
    return [true,"","Book Now"];
  } else {
    return [false,"","Booked Out"];
  }
}

$('#iDate').datepicker({ beforeShowDay: unavailable });

출처 : jQuery -DatePicker- 특정 날짜를 비활성화합니다

당신은 사용할 수 있습니다 beforeShowDay 옵션. 나는 28 일을 지나서 어느 날을 비활성화해야했다. 여기 내 코드가 있습니다.

$('.datepicker').datepicker({
    dateFormat: "yy-mm-dd",
    beforeShowDay: function(date) {
        var day = date.getDate();
        if (day > 28) {
            return [false];
        } else {
            return [true];
        }
    }
});

다음은 이에 대한 자세한 내용입니다. http://api.jqueryui.com/datepicker/#option-beforeshowday

BeforeShowday 콜백으로 전달 된 날짜 변수는 JavaScript 날짜 개체이므로 다양한 라이브러리를 사용하여 형식화 할 수 있으므로 DATE.GETTIME () 등을 사용하여 타임 스탬프를 검색 할 수 있습니다.

beforeShowDay: $.datepicker.noWeekends,

될거야

beforeShowDay: noWeekendsOrHolidays,

IE의 문제는 아마도 다음 줄에있을 것입니다.

altField: '#alternate',
}); 

쉼표 기호를 제거하려고하면 작동해야합니다.

 var unavailableDates = ["19-8-2014","14-9-2014"];

 function unavailable(date) {
    dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" +date.getFullYear();
    if ($.inArray(dmy, unavailableDates) < 0) {
     return [true,"","Book Now"];
    } else {
  return [false,"","Booked Out"];
  }
 }

 $('#iDate').datepicker({ beforeShowDay: unavailable });

라이브 데모 : http://jsfiddle.net/vfod0krm/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top