Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, questions/réponses pour les FAQ, sources et autres ressources pour la rubrique Web ainsi que ses sous-rubriques.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/01/2008, 11h30   #1
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 146
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 146
Points : 45 316
Points : 45 316
Par défaut [SRC] Name d'un élément de formulaire ajouté dynamiquement

Le problème:

L'attribution dynamique d'un name à un élément de formulaire créé dynamiquement pose problème.
Prenons un exemple avec un input, pour ajouter un input vous auriez sasn doute fait :
Code :
1
2
3
4
5
6
7
8
9
10
 
function AddInput() {
     var MonForm = document.forms[0];
    var newInput = document.createElement("input");
     newInput.name  = "bidule";
     newInput.type  = "text";
     newInput.id    = "bidule_1";
     newInput.value = "le contenu";
     MonForm.appendChild(newInput);
 }
Ho merveille l'input apparaît bien sur la page!!!
Mais vous auriez vite déchanté en vous apercevant que:
  • D'une part le name n'est pas reconnu coté client :
    Code :
    1
    2
    document.getElemetsByName("bidule")
    documents.forms[0].elements['bidule']
    retournent element has no propriety ...
  • D'autre part ce qui est encore plu gênant le contenu n'est pas transmis à la soumission du formulaire

Une solution pour que le contenu de cet élément soit transmis lors de la soumission du formulaire est d'utiliser cette syntaxe :
curieusment le fais de mettre NAME en majuscule permet le passage de la valeur au serveur ...
Cependant l'inout n'est toujours pas reconnu par son name sur la page coté cleint.
On peut éventuellement lui attribuer un id et l'appeler par
Code :
document.getElementById('bidule_1')
La solution est au moment de la création d'utiliser cette syntaxe:


Code :
1
2
3
4
5
6
7
8
9
 
function AddInput() {
     var MonForm = document.forms[0];
    var newInput = document.createElement("<input name='bidule' />")
     newInput.type  = "text";
     newInput.id    = "bidule_1";
     newInput.value = "le contenu";
     MonForm.appendChild(newInput);
 }
Et tout rentre dans l'ordre l'input est reconnu par son name et envoyé sur le serveur !
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 15h00   #2
Expert Confirmé Sénior
 
Avatar de Auteur
 
Inscription : avril 2004
Messages : 4 796
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 4 796
Points : 5 119
Points : 5 119
Ta discussion me fait penser à un (très) vieux sujet sur getElementsByName : IE et Firefox n'ont pas le même comportement vis à vis de l'attribut name et de la méthode getElementsByName().
Auteur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 17h12   #3
Expert Confirmé
 
Avatar de FremyCompany
 
Étudiant
Inscription : février 2006
Messages : 2 532
Détails du profil
Informations personnelles :
Âge : 20

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2006
Messages : 2 532
Points : 2 903
Points : 2 903
Envoyer un message via MSN à FremyCompany
Code :
	var newInput = document.createElement("<input name='bidule' />")
Ca marche sur FF ca ?
Je croyais que c'était IE-Only ?
__________________
Fremy
Pour vos développements Web et une navigation agréable, le tout gratuit :
1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
FremyCompany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 17h25   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 146
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 146
Points : 45 316
Points : 45 316

oulà ! je suis super déçu
Il semblerait en effet que cette suntaxe ne passe pas sous firefox ...
J'étais persuadé qu'elle était crossBrowser ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2008, 20h34   #5
Expert Confirmé
 
Avatar de FremyCompany
 
Étudiant
Inscription : février 2006
Messages : 2 532
Détails du profil
Informations personnelles :
Âge : 20

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2006
Messages : 2 532
Points : 2 903
Points : 2 903
Envoyer un message via MSN à FremyCompany
Bah, reste plus que la bonne vieille méthode du browser-conditional
__________________
Fremy
Pour vos développements Web et une navigation agréable, le tout gratuit :
1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
FremyCompany est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h17.


 
 
 
 
Partenaires

Hébergement Web