2017-12-01 5 views
0

이 특정 요일을 비활성화하는 첫 번째 함수 인을 결합하는 함수를 어떻게 만듭니 까?JQuery DatePicker BeforeShowDay의 두 함수 결합

는 올해의 특별한 일을하지 않도록 두 번째 기능
function disableweekdays(date) { 
    var day = date.getDay(); 
    return [(day != 0 && day != 2 && day != 4 && day != 5), ""]; 
} 

;

function disablespecialdays(date){ 
    var array = ["12-25", "01-01"] 
    var string = jQuery.datepicker.formatDate('mm-dd', date); 
    return [ array.indexOf(string) == -1 ] 
} 

그 결과가 beforeShowDay에 대해 결합 될 수 있도록;

$("#myid").datepicker({ 
    beforeShowDay: disableweekdays, 
    minDate: 0, 
    dateFormat: 'dd-MM-yy', 
    inline: true, 
    showOtherMonths: true, 
    dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], 
}) 

답변

0

&& 논리 연산자를 사용하여 두 조건을 결합 할 수 있습니다. 플러그인의 현재 날짜를 표시하려면 모든 조건을 통과해야합니다. 나는 Array#indexOf을 이해하기 쉽도록 Array#contains을 사용했습니다.

// mock jQuery.datepicker.formatDate 
 
const pad = x => x < 10 ? '0' + x : x 
 
const jQuery = { datepicker: { formatDate: (format, date) => `${pad(date.getMonth() + 1)}-${pad(date.getDate())}` }} 
 

 
function disableDays(date) { 
 
    var day = date.getDate(); 
 
    var datestamp = jQuery.datepicker.formatDate('mm-dd', date) 
 
    var specialDays = ["12-25", "01-01"] 
 
    
 
    return (
 
     day !== 0 
 
     && day !== 2 
 
     && day !== 4 
 
     && day !== 5 
 
     && !specialDays.includes(datestamp) 
 
    ) 
 
} 
 

 
// test the functions 
 
console.log(
 
    disableDays(new Date()) // depends on the day and date 
 
) 
 

 
console.log(
 
    disableDays(new Date('12-25-2017')) // expect false if not sun, tue, thur, fri 
 
) 
 

 
console.log(
 
    disableDays(new Date('12-26-2017')) // expect true 
 
)
<script src="https://codepen.io/synthet1c/pen/KyQQmL.js"></script>

+0

잘 작동 변경 후 ** date.getDate() ** **에 date.getDay() 및 ** ** [] 주위 ** ** ** 창 – arn01d

+0

추가 결과를 배열로 래핑해야하는 이유는 무엇입니까? 동일한 플러그인을보고 있다면 'true'또는 'false'를 받아 들여야합니다. – synthet1c

+0

맞습니다. @ synthet1c. 나는 플러그인을 사용하지 않았다. – arn01d