AJAX加载JQuery datepicker仅在警报后工作

时间:2016-08-18 11:38:40

标签: javascript jquery ajax datepicker

我有一个非常奇怪的问题。 我创建了一个分配了datepicker的字段。

此字段由AJAX调用加载到div中。

总之,这已经有效了......但是有一个问题。 它只有在我启动datepicker之前设置警报代码时才有效。

当我删除警报时。它只是停止工作。

初始化代码在另一个函数中:

alert('kut');
$("#mini_calendar").datepicker({
    defaultDate: "now",
    constrainInput: false,
    changeMonth: true,
    numberOfMonths: 2,
    onClose: function (selectedDate) {
    }
});     

我希望有人知道我做错了什么。

修改

万分感谢。

解决方案是:

    interval = setInterval(function(){ 
        if($("#mini_calendar").length > 0) {
            $("#mini_calendar").datepicker({
                defaultDate: "now",
                constrainInput: false,
                changeMonth: true,
                numberOfMonths: 2,
                onClose: function (selectedDate) {
                }
            });
            clearInterval( interval );
        }
    }, 300);

编辑:

我在Ajax上取得成功:

    ///######## IN CASE OF SUCCESS
    success: function (response) {
        if (response != '') {
            $("[@targetDiv]").html(response);
            DateNav_CalendarInit(DisplayType);
        }
        else {
            alert('error! Something went wrong during the obtaining of data!');
        }
    }

“DateNav_CalendarInit()”调用初始化代码

2 个答案:

答案 0 :(得分:2)

如果没有警报,您会尝试在DOM元素实际存在之前捕获它。

您应该等待 Document Ready 事件:

示例:

$(function(){
    // .. your code here ..
}

...或者只是将您的javascript代码放在代码的底部(或者至少在* #mini_calendar之后)元素。

答案 1 :(得分:0)

前几天我也遇到了同样的问题,我是通过jquery load()函数完成的。


$('body').on('load change','your container element in which #mini_calendar will load',function(){
    $("#mini_calendar").datepicker({
        defaultDate: "now",
        constrainInput: false,
        changeMonth: true,
        numberOfMonths: 2,
        onClose: function (selectedDate) {
        }
    });
});

不要忘记替换容器元素选择器。否则代码将无效

如果不是这样,你可以设置间隔,检查元素中是否存在$('mini_calendar')。