JQuery UI Datepicker - 仅显示数组中日期的问题

时间:2015-06-17 16:20:00

标签: javascript jquery jquery-ui datepicker

我使用jQuery UI datepicker作为预订引擎的一部分,允许用户仅从可用日期中进行选择。

我的代码如下:

var availableDates =  ["16/06/2014", "16/06/2014", "23/06/2014", "27/06/2014", "30/06/2014", "02/07/2014", "07/07/2014", "07/07/2014", "11/07/2014", "14/07/2014", "14/07/2014", "16/07/2014", "18/07/2014", "21/07/2014", "21/07/2014", "25/07/2014", "28/07/2014", "28/07/2014", "01/08/2014", "04/08/2014", "04/08/2014", "06/08/2014", "08/08/2014", "11/08/2014", "11/08/2014", "13/08/2014", "15/08/2014", "18/08/2014", "18/08/2014", "25/08/2014", "01/09/2014", "01/09/2014", "08/09/2014", "12/09/2014", "12/09/2014"]

此代码改编自SO上的另一个解决方案,可以在此处找到,除非他们正在执行相反操作并排除列表中的项目。如何调整我的代码以仅显示上面数组中的日期?

我的代码示例基于这篇文章: Jquery UI datepicker. Disable array of Dates

    $('.departureDate').datepicker({
        beforeShowDay: available,
        altFormat: 'yy.mm.dd',
        altField: '#cultureDate'
    });

    function available(date) {
        var dateString = jQuery.datepicker.formatDate('dd/mm/yy', date);
        if(availableDates.indexOf(dateString) == -1){
            console.log(dateString + " " + false);
            return false;
        }else{
            console.log(dateString + " " + true);
            return true;
        }
    }

1 个答案:

答案 0 :(得分:0)

我从示例中注意到我需要将我的true / false值包装在只有一个项目的数组中,因此代码应该是:

function available(date) {
        var dateString = jQuery.datepicker.formatDate('dd/mm/yy', date);
        if(availableDates.indexOf(dateString) == -1){
            console.log(dateString + " " + false);
            return [false];
        }else{
            console.log(dateString + " " + true);
            return [true];
        }
    }