Textblöcke nachträglich hinzufügen

Kalito

Erfahrenes Mitglied
Hallo,

für ein Projekt habe ich mit php und Jquery ein Formular gebaut, wo ich dieses Formular beliebig oft generieren kann. Damit kann ich zum Beispiel mehrere Personen anlegen. Da ich die Funktion aber noch in anderen Kontexten brauche, versuche ich sie allgemeiner zu halten.
Ich rufe letztendlich eine php-Seite auf, die eine html-Codeschnipsel rendert bzw. es als Template in den Speicher legt.

HTML:
<script type="text/javascript">
    var template = (<?php echo json_encode(array('a' => $this->element($dataarray['site'],array('dataarray'=>$dataarray['data'])))); ?>).a;
</script>
<?php 
  echo $this->Html->script('individual/multiple_elements');
 ?>
<div id="allElements">
  <?php echo $this->element($dataarray['site'],array('dataarray'=>$dataarray['data'])); ?>
</div>
<div id="plus">Hinzufügen</div>

Und hier der Jquery-Code
Code:
$(document).ready(function(){
    var counter = 0;
    $('#plus').click(function(){
        counter += 1;
        $('#allElements').append(template);
        $('.onlyElement:last > div > :input ').each(function(i,e){
            var cuurentName   = $(this).attr('name');
            var splitName     = cuurentName.substring(5,(parseInt(cuurentName.length)-parseInt(1))).split('_');
            var newName       = splitName[0]+"_"+counter;
            $(this).attr('name',"data["+newName+"]");
           
            $('.minus:last').attr('id','minus_'+counter);
        });
    });
   
    $('#allElements').on('click','.minus',function(){ 
        if($(this).attr('id') != 'minus_0'){
            $(this).parent().remove();
        } 
    });
});

Mein Problem nun ist, dass bei diesem Code alle Inputfelder und Selectfelder korrekt hochgezählt werden, Checkboxen aber nicht. Ich vermute den Fehler in der Zeile 7 bei :input. Wenn ich es weglasse oder nach dem :input noch ein :checkbox setze, funktioniert der Code garnicht mehr.

Habt ihr vielleicht eine Lösung?

Danke und Gruß,
Kalito
 
Hallo,

und wie soll ich es einbauen? Habe jetzt mehrere Variationen probiert, doch dann funktioniert jedesmal der Code garnicht mehr, da dieser die ID nicht mehr hochzählt.
 

Neue Beiträge

Zurück