如果ajax调用已经在页面上,则jquery datepicker不起作用

我已经在我的页面上有一个datepicker输入(称之为X)。 有一个按钮,当你点击它时,它会进行ajax调用并在页面上打印一些html内容。 在ajax响应中,还有另一个datepicker输入(称之为Y),当你在独立页面上打开它时可以正常工作,但是在ajax调用中,Y没有显示datepicker框(但它在X上工作)。

Y已经有了“hasDatepicker”类,我试图删除它然后回想起datePicker方法,但没有运气。 我设法解决它的唯一方法是从页面源删除“ui-datepicker-div”并在Y上调用datepicker。但这次,X停止工作!

这种使用datepicker的方法有什么问题? 我能以任何方式使它们都正常工作吗?

更新:我设法通过在ajax调用之前运行这两个命令然后在ajax调用之后调用datepicker来解决这个问题:

jQuery('.datepicker').datepicker("destroy"); jQuery('#ui-datepicker-div').remove(); 

我不知道为什么,但destroy命令不会删除ui-datepicker-div,我必须手动删除它! 关于这个的任何线索?

对于动态添加的数据选择器

 $('body').on('focus',".datepicker", function(){ $(this).datepicker(); });​ 

演示

我在这个问题上突破了几天,最后我设法解决了这个问题。

你需要在从DOM重新初始化之前删除一些由jQuery创建的div。

它是:

jQuery('#ui-datepicker-div').remove();

如果DOM中存在此div,则jQuery不会重新初始化DatePicker。

我的工作代码在这里:

 jQuery(document).ready(function () { InitDatePickers(); }); function RemoveDatePickers() { jQuery('#ui-datepicker-div').remove(); } function InitDatePickers() { $('#main .date_inp').datepicker($.datepicker.regional["ru"]); } function RefreshData() { RemoveDatePickers(); $.ajax({ type: 'GET', url: "/", data: GetFiltersData(), success: function (data, textStatus) { $("#main").html(data); InitDatePickers(); } }); } 

大家好!

我在这个问题上的工作解决方案是在ajax调用之后从带有hasDatepicker的元素中删除类hasDatepicker ,然后重新初始化datepicker

 $("#start").removeClass("hasDatepicker"); jQuery("#start").datepicker({ constrainInput: false, dateFormat: "yy-mm-dd", showButtonPanel: true }); 

AJAX添加的元素没有任何方法或事件inheritance,因为它们是在DOM加载后创建的。 您可以通过事件委派解决此问题。 但是,对于您正在尝试的方法,这是一种更好的方法。 而不是之后添加日期选择器,为什么不隐藏它? 如果那不是一个选项,那么你需要在ajax成功中重新绑定datepicker实例。

 success: function(data){ $('body').append(//code to create new_ele); //fire off the datepicker again. $('new_ele').datepicker(); }