salut,
je veux faire un formulaire avec un champ et un bouton une fois introduit une valeur numérique (n) et en appuyant sur le bouton il y aura une création d'un (n) champs texte dans la même page (dans un div par exemple)
merci d'avance
Version imprimable
salut,
je veux faire un formulaire avec un champ et un bouton une fois introduit une valeur numérique (n) et en appuyant sur le bouton il y aura une création d'un (n) champs texte dans la même page (dans un div par exemple)
merci d'avance
Bonjour,
Tu peux faire quelque chose du genre :
et sur le bouton :Code:
1
2
3
4
5
6
7
8
9
10
11
12 function AjouteChamps(nom) { nbre = document.getElementById(nom).value; for( i = 0; i < nbre; i++) { textbox = document.createElement('input'); textbox.setAttribute("type","text" ); textbox.setAttribute("name","champ"+(i+1)); document.getElementById('monDiv').appendChild(textbox); } }
Code:
1
2 <input type="button" name="monbouton" onclick="AjouteChamps('idDuTextboxOuEstEcritLaValeur')" />
merci beaucoup
ça marché
poblème résolu
j'ai des doutes sous IE ...Code:textbox.setAttribute("name","champ"+(i+1));
selon msdn "name attruibute cannot be set at runtime"
autrement dit l'attribut name ne peut etre definit ou modifié dynamiquement
A merde, j'avoue l'avoir utiliser qu'une fois pour un truc personnel et comme j'utilise toujours FF j'avais jamais testé sur IE. Après l'avoir testé je confirme. Cela ne marche pas sur IE... Désolé !
On peut toujours se faire un :
et ajouter cela par innerHTML et tant pis pour le DOM :(Code:
1
2 var input = '<input type="text" name="champ' + (i+1)'" />
pareil ça ne fonctionnera pas, c'est sasn doute d'ailleurs pour cela que je me suis fendu d'un truc "un peu complique" pour palier à cette lacune d'IE ... ;)
oui même avec d'autre navigateur comme opera ne marche pas
le truc que l'attribut ne peut être définit ou modifié dynamiquement
donc on peut dire c moitié résolu
ça marche que sur firefox
Je ne comprends pas ce que tu entends par : cela ne passera pas.
Si l'on fait un truc du genre :
Pourquoi cela ne passerait pas ? Après c'est peut être les différences entre les IE :( mais sur IE 7 il m'affiche bien mes textbox.Code:
1
2
3
4
5
6
7
8
9
10
11 function AjouteChamps(nom) { nbre = document.getElementById(nom).value; var texte = ''; for( i = 0; i < nbre; i++) { text += '<input type="text" name="monChamp' + (i+1) + '" />'; } document.getElementById('maDiv').innerHTML = text; }
Merci pour les infos
ils sont affichés mais le name n'est pas forcément prix en compte, et du coup la valuer n'est pas forcément soulise lors du submit du form etcoté serveur tu ne recupères pas tes valeurs $_POST['name'] ou $_GET['name']
on pourrait par exemple utiliser un button et non un submit qui ferait les vérifications et appellerait la méthode submit après.
edit : désolé spacefrog j avais pas vu ta réponse. Merci pour l'information c'est vrai que j'utilise de temps en temps la façon de faire (avec innerHTML) et j'avais jamais remarqué que cela pouvait posé des problèmes mais c'est vrai que la plupart du temps c'était pour des applis perso donc tournant sur FF mais bon... Ben merci beaucoup je vais essayer d'en apprendre plus sur ta méthode qui a priori est la meilleure. Merci :D
lol je m'y attendais à cette réponse mais j'ai du quitter le PC deux minutes et n'ai pas eu le temps de faire la modif pour marquer la précision avant ta réponse.
C'était juste pour dire qu'il y avait d'autres solutions possibles, même si elle ne sont pas forcement meilleures. tout dépend du contexte.