JQuery DatePicker на клонированных элементах - PullRequest
3 голосов
/ 26 апреля 2011

Я пытаюсь применить элемент управления datepicker к клонированным полям ввода.Что я делаю, так это нахожу строку таблицы, которую хочу клонировать, клонирую ее с помощью clone (false), а затем для каждого ввода с классом .date вызываем функцию datepicker ().Код выглядит следующим образом:

$('.repeat').bind('click', function(){
        var parentEl = $(this).parents('.root');
        var lastRow = jQuery.makeArray($(parentEl).find('.last'));
        var newRow = $(lastRow).clone(false);
        $(lastRow).removeClass('last');
        $(newRow).addClass('last');
        newRow.find('input').each(function(){
            this.name = this.name.replace(/\[(\d+)\]/,function(str,p1){return '[' + (parseInt(p1,10)+1) + ']'});
    }).end().insertAfter($(lastRow));

newRow.find('.date').each(function() {  
        $(this).removeAttr('id');
        $('.date').datepicker({dateFormat: 'dd-mm-yy', changeYear: true, yearRange: '1970:2010'});
            });

Теперь и $ (this) .datepicker (), и $ ('. Date'). Datepicker () не могут присоединить элемент управления datepicker к input.date.Приведенный выше код работает как положено, за исключением бита datepicker.У кого-нибудь есть идеи?!

Заранее спасибо!

Ответы [ 2 ]

14 голосов
/ 26 апреля 2011

Работает, если сначала добавить строку ( перед применением средства выбора даты ), а также удалить класс, добавленный средством выбора даты .hasDatepicker.

$('.repeat').bind('click', function(){
        var parentEl = $(this).parents('.root');
        var lastRow = jQuery.makeArray($(parentEl).find('.last'));
        var newRow = $(lastRow).clone(false, false);
        $(lastRow).removeClass('last');
        $(newRow).addClass('last');
        $('.root').append(newRow); // added this

        newRow.find('.date').each(function() {
            $(this).removeAttr('id').removeClass('hasDatepicker'); // added the removeClass part.
            $('.date').datepicker({dateFormat: 'dd-mm-yy', changeYear: true, yearRange: '1970:2010'});
        });
});

демо: http://jsfiddle.net/gaby/LCfC2/

0 голосов
/ 20 апреля 2017

Элемент class должен быть удален, а затем к клонированному элементу должен быть добавлен инструмент выбора даты.Работает каждый раз для меня, независимо от того, подключен он к DOM или нет.

$(inputData3).removeAttr("class");
$(inputData3).datepicker();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...