2017-12-01 3 views
0

Wie erstelle ich eine Funktion, die diese erste Funktion kombiniert, die sperrt bestimmte Wochentage;Kombinieren Sie zwei Funktionen für JQuery DatePicker BeforeShowDay

function disableweekdays(date) { 
    var day = date.getDay(); 
    return [(day != 0 && day != 2 && day != 4 && day != 5), ""]; 
} 

mit dieser zweiten Funktion, die spezielle Tage des Jahres deaktiviert;

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

so dass ihre Ergebnisse für das beforeShowDay kombiniert werden in;

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

Antwort

0

Sie können beide Bedingungen mit dem logischen Operator && kombinieren. Es müsste alle Bedingungen übergeben werden, um das aktuelle Datum für das Plugin anzuzeigen. Ich verwendete Array#contains eher, dass Array#indexOf als es einfacher zu verstehen ist.

// 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

Arbeiten auch nach dem Wechsel ** Date.getDate() ** bis ** Date.getDay() ** und das Hinzufügen von ** [] ** ** um Rückkehr ** – arn01d

+0

Warum müssen Sie das Ergebnis in ein Array einschließen? Es sollte 'true' oder' false' akzeptieren, wenn wir dasselbe Plugin betrachten. – synthet1c

+0

Sie haben Recht. @synthet1c. Ich habe das Plugin nicht benutzt. – arn01d

Verwandte Themen