2008-10-24 8 views
0

J'essaie d'ajouter dynamiquement des zones de texte (input type = text) à une page en javascript et de les pré-remplir. Les boîtes de texte arrivent, mais elles arrivent vides. Quelle est la bonne façon de pré-remplir une zone de texte. Idéalement, j'aimerais utiliser l'astuce de créer un div enfant, en définissant la propriété innerhtml, puis en ajoutant cette div à la div principale parent, mais cela n'a pas fonctionné. Ensuite, je pensais que j'utiliserais le dom mais la définition de textboxname.value avant ou après l'insertion ne fonctionnera pas et faire txttextbox.setattribute ('value', 'somevalue') ne fonctionnera pas non plus. Fonctionne bien dans Firefox. Ce qui donne? Cela doit être possible? Voici mon code. Je sais que j'utilise seulement des littéraux de chaîne, mais ceux-ci seront remplacés par les résultats d'un appel de service Web finalement. Voici un peu de code. Oh, et comment formater le code pour apparaître quand vous le tapez? Je pensais que ça disait de mettre en retrait quatre espaces, et je l'ai fait mais le code est toujours sur une ligne. Désolé pour ça.Remplissage de la zone de texte créée dynamiquement avec javascript dans IE

var table=document.createElement('table'); 
var tbody=document.createElement('tbody'); 
var row=document.createElement('tr'); 
row.appendChild(document.createElement('td').appendChild(document.createTextNode('E-mail'))); 
var txtEmail=document.createElement('input'); 

row.appendChild(document.createElement('td').appendChild(txtEmail)); 
tbody.appendChild(row); 
table.appendChild(tbody); 

//document.getElementById('additionalEmails').innerHTML=""; 
document.getElementById('additionalEmails').appendChild(table); 

Répondre

4
txtEmail.value = 'my text' 

ne fonctionne pas?

2

Vous pouvez également utiliser Prototype faire facilement:

document.body.insert(new Element("input", { type: "text", size:20, value:'hello world' })) 
0

J'ai rencontré des problèmes similaires à cela dans le passé, et alors que ma mémoire est un peu floue sur la raison pour laquelle il se passait exactement, je pense vous devrez peut-être vous assurer que l'élément est effectivement ajouté au DOM avant de modifier sa valeur. par exemple:

 

var txtEmail=document.createElement('input'); 

document.getElementById('someElementThatAlreadyExists').appendChild(txtEmail); 

txtEmail.value = 'sample text'; 
 
+0

Je pensais qu'en l'ajoutant à une cellule qui était en train d'être ajoutée à une ligne qui était ajoutée à une table qui était ajoutée à la div en cours et qui serait ajoutée au document? J'essaie de générer dynamiquement une table, et cela s'avère beaucoup plus difficile que prévu. –

+0

Je ressens votre douleur. Comme je l'ai dit, je me souviens avoir eu un problème semblable à celui-ci par le passé, mais je ne me souviens pas de ce que j'ai fait pour le résoudre. Ce que je suggère est que vous essayez de définir la valeur de l'entrée après la table créée dynamiquement et tous ses enfants ont été ajoutés à la div. – mmacaulay

+0

Une autre pensée - je me souviens aussi avoir des problèmes avec le code qui mélange la création d'éléments DOM via createElement/appendChild et l'insertion de HTML en ligne avec someElement.innerHTML. Désolé, je ne peux pas vous aider davantage:/ – mmacaulay

0

J'ai fini par résoudre ce problème en injectant le code HTML directement dans une page via un enfant div. Cela a marché, c'est juste que je suis aveugle et le logiciel que j'utilise pour lire l'écran pour une raison stupide n'a pas réussi à voir le texte dans la zone de texte. Allez comprendre. Merci pour le conseil sur le prototype, si jamais je décide de ne pas tricher et d'ajouter directement les éléments au dom, je le ferai de cette façon.

Questions connexes