jQuery:在动态创建的输入上运行多个datepicker

时间:2012-03-27 02:55:16

标签: javascript jquery jquery-ui datepicker

我正在尝试并且未能将datepicker添加到动态创建的输入中。

他们有不同的ID,我专门针对新输入并调用datepicker。

在下面的jsFiddle示例中,它仅适用于第二个输入(首先调用一个日期选择器),之后不适用于任何其他输入。

以下是jsFiddle:http://jsfiddle.net/TJfbc/1/按加号添加更多内容。

注意:我知道第一个元素没有datepicker。

2 个答案:

答案 0 :(得分:1)

这是cleaner alternative

$(function() {
    //append one handler to the parent to detect append actions
    $('.action_items').on('click', '.expand', function() {
        var $el = $(this);
        $el.parent()
            .clone()
            .appendTo($el.closest('.action_items'))
            .find('input')
            .removeClass('hasDatepicker')
            .each(function () {
                newName = this.name.slice(0,6) + (parseInt(this.name.slice(6)) + 1);
                this.name = newName;
                this.id = newName;
             })
            .datepicker();

        //change text, remove original handler, add the remove handler
        $el.text('-').off('click').on('click',function(){
            $(this).parent().remove();
        });
    })
});​

答案 1 :(得分:0)

http://jsfiddle.net/TJfbc/27/

您需要“刷新”之前已经使用'hasDatepicker'类的文本字段,然后才能初始化新的

new_action_item.find('.dpDate').removeClass('hasDatepicker').datepicker()

可读性的改进:

  • 无需在new_action_item上重复调用$(),因为clone()返回已经是jQuery的对象