2016-04-12 7 views
2

hinzufügen, habe ich dynamische Form erstellt, in der ich so viele Autoren hinzufügen kann, wie ich möchte.insertBefore stoppt in der Form arbeiten Wenn ich div

<form action="uploadtodb.php" target="dummyframe" method="post" name="myform"> 
      <p> 
      Authors last name:  <input type="text" name="authorln[]" size="32" /> 
      Authors first names: <input type="text" name="authorfns[]" size="32" /> 
      </p> 
      <p id="add_author_button"> 
      <button type="button" onclick="add_author()">Add new author</button> 
      <button type="button" onclick="remove_author()">Remove last author</button> 
      </p> 
</form> 

wo Funktion add_author() fügt zu myform neue Ziffer bezeichnet unten als para

document.myform.insertBefore(para, document.getElementById("add_author_button")); 

Es funktioniert perfekt, aber dann wollte ich es einige Stile hinzuzufügen. Also habe ich div:

<form action="uploadtodb.php" target="dummyframe" method="post" name="myform"> 
     <div id="authors"> 
      <p> 
      Authors last name:  <input type="text" name="authorln[]" size="32" /> 
      Authors first names: <input type="text" name="authorfns[]" size="32" /> 
      </p> 
      <p id="add_author_button"> 
      <button type="button" onclick="add_author()">Add new author</button> 
      <button type="button" onclick="remove_author()">Remove last author</button> 
      </p> 
     </div> 
</form> 

Nach einer solchen Änderung Tasten reagieren nicht.

+0

Warum nicht das Formular selbst formatieren, indem Sie eine Klasse oder eine ID hinzufügen? Sie können das Formular als einen Container behandeln – Erick

+0

@Erick Ich entschied mich, Formular in verschiedene Stile zu teilen. Um der Frage willen habe ich nur Autoren extrahiert. –

+0

'para' ist nicht länger ein Kind von' myform', also funktioniert 'document.myform.insertBefore' möglicherweise nicht mehr so, wie Sie es erwarten. – RJM

Antwort

2

Obwohl Sie document.<form name> für Formulare verwenden können, können Sie dies nicht für beliebige Elemente wie Ihre Autoren div tun. Warum nicht einfach getElementById() verwenden?

document.getElementById("authors").insertBefore(para, document.getElementById("add_author_button")); 
+0

Es funktioniert perfekt. Ich hatte Angst, dass 'document.getElementById (" authors "). (...)' vergessen könnte, dass es auch in 'myform' sein sollte, aber ich habe es überprüft und alles auf den Server hochgeladen. –

Verwandte Themen