1

我有一个代码可以很好地独立作为小提琴,但是一旦我将代码导入到我的 WordPress 环境中就无法工作。基本上我试图根据日期范围数组限制可选日期。

工作小提琴:http: //jsfiddle.net/rLnTQ/658/

为什么当我导入到我的 WordPress 页面时这不起作用?我相信这可能与对“beforeShowDay:disabledays”的引用有关。

无论如何,这是我的代码:

var unavailableDates = ["29-6-2013"];

function disabledays(date) {
    dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear();
    if ($.inArray(dmy, unavailableDates) == 0) 
    {
        return [false, "", "Unavailable"]
    } 
    else 
    {
        var day = date.getDay();
        return [true, "", ""];
    }
}

jQuery(document).ready(function($){
$('#bookingDate').datepicker({
                                changeMonth:true, 
                                changeYear:true, 
                                dateFormat:"dd/mm/yy",  
                                minDate:"+2d", 
                                constrainInput: true,
                                beforeShowDay: disabledays
                            });
});
4

1 回答 1

1

您的代码运行良好,好像您有$ alias conflict,有几个解决方案

1)jQuery.inArray代替$.inArray

2)我更喜欢的另一个解决方法是使用 jQuery 提供的 noConflict 函数来解决这个问题,你可以在这里阅读更多http://api.jquery.com/jQuery.noConflict/

jQuery.noConflict();
(function($) {
  $(function() {
    // more code using $ as alias to jQuery
  });
})(jQuery);
// other code using $ as an alias to the other library

你也可以试试这个代码(你的代码的整洁版本:)),

var unavailableDates = ["6-29-2013","6-27-2013","7-2-2013"];

function disabledays(date) {
var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();    

    for (i = 0; i < unavailableDates.length; i++) {
        if(jQuery.inArray((m+1) + '-' + d + '-' + y,unavailableDates) != -1 || new Date() > date) {
            return [false];
        }
        return [true];
    }
 }

    jQuery(document).ready(function($){
    $('#bookingDate').datepicker({
                                    changeMonth:true, 
                                    changeYear:true, 
                                    dateFormat:"dd/mm/yy",  
                                    minDate:"+2d", 
                                    constrainInput: true,
                                    beforeShowDay: disabledays
                                });
    });

这是 jsfiddle http://jsfiddle.net/rLnTQ/659/

于 2013-06-27T08:09:05.003 回答