动态JQuery日期选择器代码

时间:2010-03-02 17:16:46

标签: datepicker dynamic

我需要创建动态过滤器,动态添加/删除行。

它包含一个下拉框。根据所选的下拉框值,我创建了一个动态<TD>,其中可能包含文本字段或下拉列表。

如果是文本字段,那么我必须为该文本字段添加日期选择器。

我已完成此操作,但动态生成的文本字段的日期选择器除外 如果您要创建100行,则所有行的文本字段名称应相同。

如何为动态生成的文本字段添加datepicker?

7 个答案:

答案 0 :(得分:16)

我有同样的问题。 您需要将DatePicker重新绑定到动态添加的行。 日期选择器将hadDatePicker类与动态行关联。

所以你需要删除它并重新绑定。

像这样 -

    jQuery('.date-pick').removeClass('hasDatepicker').datepicker({
    dateFormat: 'mm-dd-yy'
    });

此致 蒂娜·阿格拉瓦尔

答案 1 :(得分:3)

实际上我确实使用了@Tina Agrawal提供的解决方案但是从现在起,当我从日历中选择日期时,我再次点击并重新选择。如果我点击下个月,它将转到1900-01-01。

这太奇怪了......

经过两个小时的试验,错误和研究。

我只是这样做了:

$('.date-pick').live('click', function(){
 $('.date-pick').datepicker();
});

好吧。

答案 2 :(得分:2)

我有同样的问题并以不同的方式解决了它。虽然我不太清楚它为什么起作用,因为我对jquery很新。我编写了以下内容,它迭代了具有类“class_date”的整个控件集,并将datepicker控件重新绑定到它。

$(".class_date").removeClass('hasDatepicker').datepicker();

答案 3 :(得分:1)

Tirst将一个class属性作为“date”添加到您的输入或div。

动态添加文字输入后,必须再次调用$('.date').datePicker()以将datePicker绑定到新输入或div。

答案 4 :(得分:1)

我遇到了类似的问题,当我向表中动态添加新行时,新行中的日期选择器字段(动态添加到DOM中的任何行)都在更新我的初始行日期选择器字段。

如上所述删除hasDatepicker类不足以解决我的问题,可能就像我使用.clone()创建动态添加的行一样。

克隆行时的解决方案是删除克隆的输入字段,重新创建它们,将它们添加到我新克隆的表行中,然后重新启动日期选择器

例如:

//Remove exisiting cloned input fields
new_row.find("td.date input").remove();

//Create new input fields and append to table td
var date_tds = new_row.find("td.date");
$('<input />', {"name":"gStartDates["+n_array_pos+"]","type":"text"}).appendTo(date_tds[0]);
$('<input />', {"name":"gEndDates["+n_array_pos+"]","type":"text"}).appendTo(date_tds[1]);

//Re-initiate datepicker on the input fields                    
new_row.find("td.date input").datepicker({
    dateFormat:"dd-mm-yy",
    minDate:StartDate,
    maxDate:EndDate
});

答案 5 :(得分:0)

使用JQuery Live访问动态创建的DOM。

http://api.jquery.com/live/

你可以附上选择器。

http://jqueryui.com/demos/datepicker/

答案 6 :(得分:0)

应该使用“.on”而不是直播 - 请参阅 http://api.jquery.com/on/