如何在jquery datepicker中定位日期数组

时间:2018-02-03 17:10:58

标签: jquery css datepicker

我试图在datepicker中点击特定日期时触发更改。我无法弄清楚它为什么不起作用。在这个例子中,当我点击第一个数组日期(2月7日)时,没有任何反应。当我点击第二个(2月21日)时,我收到了正确的警告completed。当我点击其他任何地方时,我会收到completedopen警报。

jQuery(document).ready(function($){

var pastorder = ["2/7/2018", "2/21/2018"];

function eventDays(date) {
    var string = ( date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();

    if (jQuery.inArray(string, pastorder) != -1){
        return [true, "pastorder"];
    } else {
        return [true, "open" ];
    } 

} 

jQuery('.week-picker').datepicker({
    onSelect: function (dateStr) {
        var date = new Date(dateStr);
        var string = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();

        if ($.inArray( string, pastorder )) { // In Pastorder array
            alert( "completed" );                           
        }
        if ($.inArray( string, pastorder ) == -1) { // Not in array
            alert( "open" );                            
        }
    },

    beforeShowDay: eventDays
});

}); 

这是我的第一个codepen

我也试图在没有运气的情况下定位css。

        onSelect: function (dateStr) {
        var date = new Date(dateStr);
        var string = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();

        if ($(this).hasClass( "pastorder")) {
            alert( "completed" );                           
        } 
        if ($(this).hasClass( "open")) {
            alert( "open" );                            
        }

    },

这是我的第二个codepen

1 个答案:

答案 0 :(得分:2)

$.inArray( )搜索数组中的指定值并返回其索引(如果未找到则返回-1)。

在您的情况下,$.inArray( string, pastorder)在Javascript中日期为02/7/2018为假时返回0,因此if块未执行。

将if条件更新为if ($.inArray( string, pastorder) > -1)

var pastorder = ["2/7/2018", "2/21/2018"];
jQuery('.week-picker').datepicker({
  onSelect: function (dateStr) {
    var date = new Date(dateStr);
    var string = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();
    if ($.inArray( string, pastorder) > -1) { // In Pastorder array
        alert( "completed" );                           
    }
    if ($.inArray( string, pastorder ) == -1) { // Not in array
        alert( "open" );                            
    }
   },
   beforeShowDay: eventDays
  });
});