DatePicker无法在ajax加载的页面中工作

时间:2012-07-10 14:32:14

标签: jquery ajax jquery-ui

我将datepicker附加到全局脚本文件中的输入,如下所示:

$(document).on("focusin",".datePick", function () {
            $(this).datepicker({
                dateFormat: "dd/mm/yy",
                changeMonth: true,
                changeYear: true,
                onClose: function () { $(this).valid(); }
            });
        });

在特定页面上,在模式对话框(也是jquery ui)中有输入(将与datepicker一起使用),我通过$ .load()调用该页面并在其他页面中注入div。

上面的代码非常适用于其他页面中的静态输入,但对于上面的场景,它显示了datepicker对话框,但是当我点击日期时,它会抛出错误(f未定义)编辑:VS2010抛出“无法设置属性'currentDay'的值:object为null或undefined“

有人建议使用live()方法,但我不想使用弃用的方法..我该怎么办?

提前致谢

Ozgu

3 个答案:

答案 0 :(得分:10)

我遇到了这个确切的错误,虽然我的答案对OP没有帮助,但未来也许会有所帮助。

当我与页面中的其他元素发生ID冲突时,我收到此错误消息。

答案 1 :(得分:4)

正如我在TJ VanToll的回答中所提到的那样,只要在加载DOM时你的触发器所绑定的父元素就会出现,你就可以了。

有关示例,请参阅this fiddle

<强> JS:

$(function(){
    $(document).on("focusin",".datePick", function () {
       $(this).datepicker({
            dateFormat: "dd/mm/yy",
            changeMonth: true,
            changeYear: true,
            onClose: function () { $(this).valid(); }
        });
    });

    $('#focusin').append('<input class="datePick" name="datepicker" />');

});​

<强> HTML:

<div id="focusin"></div>​

只要你的模态div在加载时出现,它应该能够在加载后捕获你的输入。

答案 2 :(得分:0)

使用livedelegateon不能与jQuery UI小部件一起使用,因为它们是有状态插件,必须在存在必要的DOM节点后进行实例化。

您可以通过在注入额外标记后实例化datepicker来完成您正在寻找的内容。这是一个例子 - http://jsfiddle.net/tj_vantoll/qN8dG/2/