2010-06-25 5 views
0

J'ai une forme complexe qui a une section statique et une qui peut avoir de 0 à plusieurs divs qui contiennent des boutons radio, des champs de texte et des zones de texte.La meilleure façon d'ajouter une quantité dynamique d'éléments à un formulaire?

Je me demande quelle est la meilleure façon d'ajouter des éléments à la section qui a une quantité variable d'entrées de formulaire. J'ai une solution de travail, mais ce n'est probablement pas le meilleur: J'utilise javascript pour ajouter un morceau de code html et l'ajouter à la div contenant le montant variable des champs de saisie. Dans l'exemple de code ci-dessous, mon code javascript ferait quelque chose comme

Javascript

document.getElementId('dynamic_form_stuff').innerHTML += "<div id='element3'>Form stuff</div>"; 

HTML

<form> 
    <div id="static_form_stuff"> 
    form fields 
    </div> 

    <div id="dynamic_form_stuff"> 
    <div id="element1"> 
     Radio buttons stuff 
     Text field stuff 
     Text area stuff 
    </div>  
    <div id="element2"> 
     Radio buttons stuff 
     Text field stuff 
     Text area stuff 
    </div> 
    </div> 
</form> 

Répondre

0

Je pense que cela dépend en grande partie de ce que vous faites ailleurs et du nombre d'éléments que vous ajoutez, ainsi que de la manière dont vous souhaitez ajouter des gestionnaires d'événements. J'ai tendance à trouver plus facile d'utiliser les méthodes DOM si j'ai besoin d'ajouter des gestionnaires d'événements, mais si vous ajoutez simplement un formulaire avec un bouton de soumission, l'utilisation de innerHTML est plus rapide, comme illustré ici: http://www.quirksmode.org/dom/innerhtml.html.

+0

Merci pour la réponse! Donc je suppose que je suis dans une de ces situations de "si ce n'est pas cassé, ne le répare pas"? Cela ne semblait pas juste et difficile à maintenir. La solution montrée par sAc (ci-dessous) était plus propre mais tout aussi déroutante que j'ai beaucoup d'éléments (tables, entrées, images, etc.) qui iraient dans le div "elements3". J'aurais un tas d'éléments à créer et à ajouter. – FrancoisCN

+0

Cela dépend si vous ajoutez des gestionnaires d'événements ou à quelle vitesse vous souhaitez qu'ils soient affichés. Il y a des compromis ici. –

0

Personnellement, je faire quelque chose comme:

var elem = document.getElementId('dynamic_form_stuff'); 
var div = document.createElement('div'); // create element 
div.setAttribute('class', 'myclass'); // define attributes 
elem.appendChild(div); 
// and/or more code..... 

Cela me donne plus de contrôle dans l'ajout d'attributs et de style là-bas.

+0

Le style devrait être fait par css, et il est facile d'ajouter que, tout en utilisant innerHTML, mais plus de contrôle est une bonne chose, tant que cela ne vous dérange pas que le rendu soit plus long. –