9
votes

Ajouter au formulaire HTML sans perdre les informations de saisie de formulaire en cours dans JavaScript

J'ai une liste déroulante qui construit une forme basée sur les sélections sélectionnées. Donc, si une personne sélectionne 'foobar', il affiche un champ de texte, s'ils choisissent "fromage", il affiche des boutons radio. L'utilisateur peut ensuite entrer des données dans ces formulaires au fur et à mesure. Le seul problème est que lorsqu'ils ajoutent un nouvel élément de forme, tout le reste des informations est effacé. IM en utilisant actuellement les éléments suivants pour effectuer au formulaire:

document.getElementById('theform_div').innerHTML = 
    document.getElementById('theform_div').innerHTML + 'this is the new stuff';


0 commentaires

5 Réponses :


0
votes

Je suggérerais d'utiliser jQuery et son ANNEXE FONCTION.


0 commentaires

15
votes

Réglage innerhtml code> détruit le contenu de l'élément et la reconstruit à partir du HTML.

Vous devez créer un arborescence DOM séparé et l'ajouter en appelant appendicchild code>. P>

Par exemple: P>

var container = document.createElement("div");
container.innerHTML = "...";
document.getElementById("theform_div").appendChild(container);   


0 commentaires

2
votes

N'utilisez pas innerhtml pour créer les éléments de formulaire. Avec innerhtml Vous écrasez l'ancien HTML avec le nouveau HTML qui recréera tous les éléments. Au lieu de cela, vous devez utiliser le DOM pour créer et ajouter les éléments.

Exemple xxx


0 commentaires

2
votes

La façon la plus correcte de le faire sans utiliser de cadre (comme JQuery, Dojo, Yui) est la suivante: xxx

innerhtml , bien que supporté par la plupart des navigateurs, n'est pas conforme standard et - donc non garanti de fonctionner.


0 commentaires

5
votes

Étape 1:

Ajouter jQuery à vos en-têtes: P>

$("#theform_div").append("your_new_html_goes_here");


1 commentaires

Cela a fonctionné pour moi, je devais ajouter des éléments imbriqués (

  • Inside an
      )