2010-12-07 18 views
-1

J'ai créé un formulaire dans le navigateur de l'utilisateur avec JavaScript.Mise à jour de la valeur du champ de texte à l'aide de JavaScript dans un formulaire créé à l'aide de JavaScript

Plus tard, je veux remplir un champ dans le formulaire avec une chaîne utilisant JavaScript.

J'ai essayé le document.formnamehere.fieldnamehere.value = 'Foo Bar'; Mais ça ne fonctionne pas. Cela fonctionnera-t-il seulement sur un formulaire qui est dans le HTML de la page Web plutôt que celui qui a été créé avec JavaScript?

Comment puis-je remplir le champ de formulaire?

+2

Pouvons-nous du code? – Dutchie432

Répondre

2

si vous avez créé le formulaire via JavaScript, alors vous devriez avoir toujours référence à cette entrée sous forme ... code ne voyant que je suppose que cela pourrait ne pas être le cas, mais les travaux suivants: Example here

var form = document.createElement('form'); 
var text = document.createElement('input'); 

form.appendChild(text); 
form.action = '#'; 

document.body.appendChild(form); 

text.value = 'asdf'; 

[ mise à jour]

si vous voulez les récupérer via leur nom, vous pouvez le faire: Example here

var form = document.createElement('form'); 
form.name = 'someForm'; 
form.action = '#'; 

var text2 = document.createElement('input'); 
text2.name = 'someText'; 

form.appendChild(text2); 

document.body.appendChild(form); 

document['someForm']['someText'].value = 'asdf2'; 

Mise à jour pour ajouter l'attribut nécessaire action pour former l'élément comme indiqué par @ user205376

0
<div id='page'/> 
<script> 
    $('#page').append(
      $("<form/>").attr('name','someForm').append(
       $("<input/>"). 
         attr('name','sometext'). 
         attr('type','text'). 
         val('asdf2') 
      ) 
    ); 

</script> 

: note J'utilise jQuery de le faire et vous pouvez le tester en action here.

1
/* 
    credits: subhaze 
    + element reference by name 
    + finally, generated fragment is valid HTML 
*/ 

var text = document.createElement("INPUT"); 
text.name = "inputname"; 
text.type = "TEXT"; /* this is default, anyway */ 

var div = document.createElement("DIV"); 
div.style.border = "thin dashed gray"; 
div.appendChild(text); 

var form = document.createElement("FORM"); 
form.name = 'formname'; 
form.action = ''; /* required */ 
form.appendChild(div); 
form.onsubmit = function() { 
    return false 
}; 

document.body.appendChild(form); 

text.value = "LION!"; 

setTimeout(
    function() { 
     document.formname.inputname.value = ">:3" 
    }, 
    5000 
); 
+0

Merci de m'avoir ajouté dans les fichiers, cependant, 'text.type = 'text'' n'est pas nécessaire. Les entrées saisissent par défaut 'text' http://www.w3.org/TR/html401/interact/forms.html#adef-type-INPUT – subhaze

+0

@subhaze: true. En fait, j'ai échoué avec cette assertion valide (élément de niveau bloc nécessaire autour de '') –