2012-12-14 18 views
5

Mam pole wyboru daty jquery, które klonuję, gdy użytkownik kliknie przycisk Add. Chcę, aby selektor daty pojawił się dla kolejnych dodanych pól na ekranie. Teraz datepicker pojawia się tylko dla pierwszego pola i not for the added/cloned fields.Datepicker jquery nie działa dla sklonowanych elementów

Po sprawdzeniu wielu postów na podobny temat udało mi się dotrzeć na tym etapie. Poniżej znajduje się mój kod do tej pory.

<div class="repeatingSection"> 
<a href="#" class="deleteDate" style="display: none;">-Delete</a> 
<input type="text" class="dateListValues" style="position: relative; z-index:100000;" 
     id="dateListValues_1" size="15" /> 
</div> 
<a href="#" class="addDate">+ Add</a> 

JS:

// Add a new repeating section 
$('.addDate').click(function(){ 
    var currentCount = $('.repeatingSection').length; 
    var newCount = currentCount+1; 
    var newID; 
    var lastRepeatingGroup = $('.repeatingSection').last(); 
    var newSection = lastRepeatingGroup.clone(); 
    newSection.insertAfter(lastRepeatingGroup); 
    newSection.find("input").each(function (index, input) { 
     input.id = input.id.replace("_" + currentCount, "_" + newCount); 
     input.name = input.name.replace("_" + currentCount, "_" + newCount); 
     input.value = ""; 
      //removing the additional hasDatepicker class 
     $('#'+input.id).removeClass('hasDatepicker'); 
    }); 

    return false; 
}); 

    $('.dateListValues').each(function(){ 
    $(this).datepicker(); 
    }); 

dzięki.

+0

Czemu usuwając klasę hasDatepicker? –

+0

znacznie wcześniej nie usunąłem go. Ale przeczytaj tutaj http://stackoverflow.com/questions/5788999/jquery-datepicker-on-cloned-elements .. więc próbowałem robić to także – DarkKnightFan

Odpowiedz

4

Musisz zainicjować wtyczkę datepicker na nowo utworzonym elemencie. Spróbuj dodać ten wiersz tuż przed return false;:

newSection.find(".dateListValues").datepicker(); 
+0

doskonałe !! zadziałało ... wielkie dzięki .. – DarkKnightFan

+0

musisz poczekać jeszcze 2 minuty: P – DarkKnightFan

+0

@DarkKnightFan dzięki: D –

1

initailize wyboru daty wewnątrz funkcji click ..

$('.addDate').click(function(){ 
var currentCount = $('.repeatingSection').length; 
var newCount = currentCount+1; 
var newID; 
var lastRepeatingGroup = $('.repeatingSection').last(); 
var newSection = lastRepeatingGroup.clone(); 
newSection.insertAfter(lastRepeatingGroup); 
newSection.find("input").each(function (index, input) { 
    input.id = input.id.replace("_" + currentCount, "_" + newCount); 
    input.name = input.name.replace("_" + currentCount, "_" + newCount); 
    input.value = ""; 
     //removing the additional hasDatepicker class 
    $('#'+input.id).removeClass('hasDatepicker'); 

}); 
    newSection.find(".dateListValues").datepicker(); //here 
    return false; 
}); 
+0

Nie powinieneś umieszczać kodu w każdej pętli –

+0

tak .. prawda ... dzięki ..:) .. edytowane .. i tak myślę, że OP dostał odpowiedź .. :) – bipen

+0

dzięki @bipen w każdym razie! :) – DarkKnightFan