Quiero deshabilitar los fines de semana en el selector de fechas, así como las fechas específicas que estarán en una matriz. He notado que no puedo combinar estas 2 opciones en beforeShowDay ya que solo acepta 1 función. ¿Hay alguna manera de agregar 2 funciones en beforeShowDay ?
$(function() { var unavailableDates = ["27-12-2021", "28-12-2021", "29-12-2021", "30-12-2021", "31-12-2021", "01-01-2022", "02-01-2022", "03-01-2022", "04-01-2022"]; function unavailable(date) { dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear(); if ($.inArray(dmy, unavailableDates) == -1) { return [true, ""]; } else { return [false, "", "Unavailable"]; } } $("#datepicker").datepicker({ dateFormat: "dd-mm-yy", changeMonth: false, changeYear: false, minDate: '10D', beforeShowDay: $.datepicker.noWeekends, unavailable // throws an error becaus ei have 2 options }); }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="https://code.jquery.com/ui/1.13.0/jquery-ui.min.js"></script> <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" /> <input type="text" id="datepicker" />El problema se debe a que la propiedad beforeShowDay solo acepta una sola función.
Para hacer lo que necesita, puede crear una función anónima en la que llame a las funciones noWeekends() y unavailable() y combine el resultado, así:
jQuery($ => { let unavailableDates = ["27-12-2021", "28-12-2021", "29-12-2021", "30-12-2021", "31-12-2021", "01-01-2022", "02-01-2022", "03-01-2022", "04-01-2022"]; let isUnavailable = date => $.inArray(`${date.getDate()}-${(date.getMonth() + 1)}-${date.getFullYear()}`, unavailableDates) >= 0; $("#datepicker").datepicker({ dateFormat: "dd-mm-yy", changeMonth: false, changeYear: false, minDate: '10D', beforeShowDay: date => { if (isUnavailable(date) || !$.datepicker.noWeekends(date)[0]) { return [false, "", "Unavailable"]; } else { return [true, ""]; } } }); }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> <script src="https://code.jquery.com/ui/1.13.0/jquery-ui.min.js"></script> <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" /> <input type="text" id="datepicker" />