Nommer champs input après insertBefore
Bonjour,
J'arrive à créer un champs texte avant un bouton, avec insertBefore (c'est de la balle)
mais le problème c'est pour
donner un nom différent aux nouveaux inputs (pour les récupérer en POST).
Dans l'exemple ci-dessous, il y a:
3 lignes contenant chacune: 3 inputs + un bouton lançant 'add_input'.
J'y envoi:
- before_what = id du bouton
- id_ligne
- num_champ (le dernier numéro du champs)
Est-ce que la solution serait de:
Créer une variable js pour chacune des lignes avec le nombre d'input
et de l'incrémenter à chaque appel de la fonction ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| <?php
for ($id_ligne=1; $id_ligne <= 3; $id_ligne++) { ?>
<div>
<?php for ($num_champ=0; $num_champ <3 ; $num_champ++) { ?>
<input type="text" name="champ_<?php echo $id_ligne;?>_<?php echo $num_champ;?>" placeholder="champ_<?php echo $id_ligne;?>_<?php echo $num_champ;?>">
<?php } ?>
<input id="ajout_<?php echo $id_ligne;?>" type="button" value="Ajouter ligne <?php echo $id_ligne;?>" onclick="add_input(this.id,'<?php echo $id_ligne;?>','<?php echo $num_champ;?>')">
</div>
<?php } ?>
<script type="text/javascript">
function add_input(before_what,id_ligne,num_champ) {
alert('Ajouter avant: '+before_what+' \nLigne: '+id_ligne+' \nnum_champ: '+num_champ);
// Creer le input
var elm = document.createElement('input');
elm.setAttribute('type', 'text');
// Donner nom (+ le Placeholder pour voir le resultat)
elm.setAttribute('name', 'champs_'+id_ligne+'_'+num_champ);
elm.setAttribute('placeholder', 'champs_'+id_ligne+'_'+num_champ);
// sets the objects for reference and parent
var reper = document.getElementById(before_what);
var parinte = reper.parentNode;
// Adds elm
parinte.insertBefore(elm, reper);
}
</script> |