Salutation amis developpeurs !
Je planche sur un problème depuis un certain nombre de temps maintenant et n'ayant trouvé nul solution je m'en remet à vous grands manitous du javascript.
voici mon problème: J'ai un formulaire d enregistement dans lequel je laisse l'utilisateur entrer un ou plusieur numero de telephone.
en fait dans ce formulaire, a chaque fois que l utilisateur clique sur une petite croix, un nouveau champ est crée.
le problème est que quand je post le formulaire , les champs que j ai généré avec javascript ne sont pas pris en compte ....
et c'est bien embetant comme vous pouvez l'imaginer.
Voici quelques bribes de mon code :
le formulaire ...
le javascript qui va avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <form cible="index.php" enctype="multipart/form-data" name="addMember" method="post"> <table> <tr> <td> name </td> <td><input type="text" size=20 name="name" onkeyup="javascript:checkName();"/><i id="nameCheck" class="important">*</i></td> </tr> <tr> <td> firstname </td> <td><input type="text" name="firstname" size=15 " onkeyup="javascript:checkFirstname();"/><i id="firstnameCheck" class="important">*</i></td> </tr> <td>Phones</td> <td> <table id="phone"> </table> </td> </tr> <tr> <td></td> <td> <img heigh=18px width=18px src="images/add.jpg" style="color:red" alt="add a phone" title="click here to add a new phone line" onclick="Javascript:createNewPhone();" /> <img heigh=18px width=18px src="images/remove.png" style="color:red" alt="remove phone" title="click here to delete last phone line" onclick="Javascript:deletePhone();" /> (add or remove a phone line) </td> </tr> </table> </form>
Bon l'affichage marche parfaitement hein
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 function createNewPhone(){ var line= document.createElement("tr"); document.getElementById("phone").appendChild(line); line.innerHTML="<td><input type=\"text\" name=\"PhoneNumber\" size=14 onchange=\"Javascript:checkPhone();\"/></td><td><select name=\"phoneType\" onchange=\"Javascript:checkPhone();\"><option value=\"mobile\">mobile</option><option value=\"home\">home</option><option value=\"desk\">desk</option><option value=\"undefined\">undefined</option> </select></td><td name=\"phoneCheck\" class=\"important\"> </td>"; } function deletePhone(){ var phone = document.getElementsByName("PhoneNumber"); var line= phone[phone.length-1].parentNode.parentNode; line.innerHTML=""; } function checkPhone(){ var phone = document.getElementsByName("PhoneNumber"); var check = document.getElementsByName("phoneCheck"); var type = document.getElementsByName("phoneType"); var test=true; //create the regular expression var GlobalExp =/^\+?[0-9]{6,11}$/i; var DeskExp =/^[0-9]{3}$/i; var undefinedExp =/^[0-9]{3}|(\+?[0-9]{6,11})$/i; for(cpt=0;cpt<phone.length;cpt++) { switch(type[cpt].value){ case "desk": Expression=DeskExp;break; case "undefined": Expression=undefinedExp;break; default: Expression=GlobalExp;break; } //chosing the regExp to use depending on the type chosen if(Expression.test(phone[cpt].value)){ check[cpt].innerHTML="<img src=\"images/valid.gif\" />"; phone[cpt].style.backgroundColor="#CCFFCC"; } else{ check[cpt].innerHTML="<img src=\"images/invalid.gif\" />"; phone[cpt].style.backgroundColor="#FFCCCC"; test= false; } } return test; }
Quand je clique sur le bouton pour ajouter une ligne ca l'ajoute
quand je clique sur le bouton pour en supprimer ca l enleve.
Quand je check le code sur la page html j'ai bien ;
mais quand je fais un var_dump de la variable post dans le fichier cible, pas d'index PhoneNumber ....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <input type="text" onchange="Javascript:checkPhone();" size="14" name="PhoneNumber">
C'est vraiment surprennant ...
Si quelqu un a une solution je lui serais 100 fois redevable.
Bien à vous et merci d'avance !![]()
Partager