DatePicker显示速度非常慢

时间:2011-07-08 06:24:01

标签: jquery jquery-ui

我在我的项目中使用jquery datepicker。我使用ajax访问数据库,以检索每个月更改时需要突出显示的日期。这是使用onChangeMonthYear:function(year,month,inst)和beforeShowDay:function(dateToShow)事件完成的。日期正在被适当地突出显示,但我遇到的问题是,在前一天的活动中突出显示日期确实需要很长时间。我想在此指出,本地计算机上的访问时间非常快,并且已经消除了服务器的响应时间导致突出显示延迟的事实。

我也试过使用持续时间:'快',但这也没有帮助。

1.如何增加日期的显示时间?或

2.我怎么可能无法使用日历,这样在显示日期之前,用户无法浏览其他月份。

5 个答案:

答案 0 :(得分:1)

您应该可以使用disable选项禁用/启用日期选择器:

$('.selector').datepicker({
    onChangeMonthYear: function(year, month, inst) {
        $(this).datepicker( "option", "disabled", true);
    },

    beforeShowDay: function(date) {
        $(this).datepicker( "option", "disabled", false);
    }
});

答案 1 :(得分:1)

我想质疑你对此的看法,但我可能错了,因为我们没有所有的事实。但是从我们得到的东西:

方法1.在没有任何ajax的情况下加载服务器端的所有日期,因为它最好只加载一次,而不是多次加载。

方法2.如果1不可能用ajax加载所有日期,然后在ajax回调中激活日期选择器。

方法3.如果有大量日期,您可以批量处理,至少确保您提前几个月。

答案 2 :(得分:1)

没有代码就有点困难,但请尝试以下方法:

在CSS文件中:#calendarContainer {display:none;}

$(function(){$('#calendarContainer').show();}); 
//Will only show when document is ready.

如果即使页面已加载也会发生日期延迟:

在CSS文件中:#calendarContainer {display:none;}

$(function(){

var sI = setInterval(function() {
    if ($('.dateHighlightContainer .dates').hasClass('highlight'))
    { 
        $('#calendarContainer').show();
        clearInterval(sI);
    }
}, 1000); 
    }); 
//Check each second - Will stop and display calendar once it finds the class highlight

查看我的完整示例以获取更多详细信息:http://jsfiddle.net/Jeu5q/

答案 3 :(得分:1)

您的延迟问题必须与您的ajax方法有关。 这是工作example。我没有注意到预定义日期的任何延迟问题。

// Highlighted Days
var dayList = [1, 3, 5, 7, 9, 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 ];
var monthList = ["Jan", "Feb" , "Mar" , "Apr" , "May" , "Jun" , "Jul" , "Aug" , "Sep" , "Oct" , "Nov","Dec"  ];

function createDays(dayList, month, year) {

    var dateArray = new Array();
    $.each(dayList, function(i, value) {
        dateArray.push(new Date(month.concat(' ', value, ', ', year)));
    });
    return dateArray;
}

$(document).ready(function() {

    $dateArray = createDays(dayList, "Jul", "2011");

    $('#datepicker').datepicker({
        beforeShowDay: function(_date) {

            $highLightDay = false;            
            $.each($dateArray , function(i, date) {
                if (date.valueOf() == _date.valueOf()) {                   
                  $highLightDay = true;
                }                 
            });

            if($highLightDay)
                return [true, "ui-state-active" ,"Event-".concat(_date)];

            return [true, "", ""];
        },
        onChangeMonthYear: function(year, month, inst) {
           $dateArray = createDays(dayList, monthList[month-1], year);     

        }

    });

});

答案 4 :(得分:0)

如果您的calendar / classes / tc_calendar.php第9行显示...

$WEB_SUPPORT = "http://www.triconsole.com/php/calendar_datepicker.php";

延迟是一个超时,因此您需要将第18行更改为...

public $check_new_version = false;

日期选择器恢复正常。