jQuery datepicker没有动态插入html元素

时间:2016-02-19 20:51:18

标签: javascript jquery jquery-ui jquery-ui-datepicker

这个问题已被反复询问,唯一一次被回答的是该伙伴试图在.onReady()函数中初始化datepicker的问题。我不这样做。事实上,我实际上是在做解决方案正在做的事情;在创建元素后立即实现datepicker。

这是我的模板代码:

<input type=text name="txt_you_History_From_Date_XXX" id="txt_you_History_From_Date_XXX" class="month-picker inputField" size=16 maxlength=16>

您会注意到月份选择器课程。此外,您会注意到“XXX”占位符。

以下是插入该模板代码的代码:

//
// find the next available id
//

for (var i = 0; ; i++) {
    if (!$("#divEmployer_" + i.toString()).length) {
        break;
    }
}


//
// get html, and replace the placeholders with id, then append.
//

$.get("content/contentHistoryEmployerTemplate.html", function (data) {

    while (data.indexOf("XXX") >= 0) {
        data = data.replace("XXX", i.toString());
    }

    $("#employerDIV").append(data);
});


//
// activate datepicker on all month-picker class elements
//

$('.month-picker').datepicker({
    changeMonth: true,
    changeYear: true,
    showButtonPanel: true,
    dateFormat: 'MM yy',
    onClose: function (dateText, inst) {
        $(this).datepicker('setDate', new Date(inst.selectedYear, inst.selectedMonth, 1));
    }
});

//alert("here");

如果我取消注释,我确实看到“here”警告,所以我知道代码正在运行。

datepicker()不会抛出任何错误。

我知道这个函数是可用的,因为如果我在我的<HEAD>中注释掉我的jquery-ui-min.js,那么对datepicker()的引用就会抛出错误。

但该领域在获得焦点时没有反应。日期选择器不会出现。

谁能告诉我什么是错的?谢谢!

1 个答案:

答案 0 :(得分:1)

您正在尝试在元素存在之前实例化datepicker。将代码放入异步回调。

$.get("content/contentHistoryEmployerTemplate.html", function (data) {

    while (data.indexOf("XXX") >= 0) {
        data = data.replace("XXX", i.toString());
    }

    $("#employerDIV").append(data);

    // PUT DATEPICKER HERE
});