Frage

Ich versuche, eine dynamische Form mit Spring Formen zu machen. Grundsätzlich wird die Form einen Titel von Lernaktivität und dann ist da noch die eine Schaltfläche unten, damit er das sagt, „ein weiteres Lernen Aktivität hinzufügen“. Dies macht es möglich, dass der Benutzer eine weitere Lernaktivität hinzuzufügen. Ich möchte ihn in der Lage sein, so viel hinzufügen, wie er mag.

Ich habe nicht versucht, bevor so offensichtlich ich Fehler mit der ersten Lösung stieß ich gedacht. Ich hatte wirklich das Gefühl, was zu tun Ich habe einen Fehler erzeugen, sondern nur nach Hause fährt, was ich zu tun versuche, hier ist der Code:

<script language="javascript">
 fields = 0;
 function addInput() {
      document.getElementById('text').innerHTML += "<form:input path='activity[fields++].activity'/><br />";
 }

<div id="text">
  <form:form commandName="course">
   Learning Activity 1 
   <form:input path="activity[0].activity"/>
    <input type="button" value="add activity" onclick="addInput()"/>
    <br/><br/>
   <input type="submit"/>
  </form:form>  
  <br/><br/>
 </div>
War es hilfreich?

Lösung

Sie können nicht verwenden <form:input> im Javascript, weil ein jsp-Tag ist, der auf der Server-Seite ausgeführt wird.

Allerdings gibt es nichts Magisches an, wie eine HTML-Eingabe in ein Feld im Frühjahr Befehl Objekt gebunden wird; es ist nur auf den Namen basiert. Also in Ihrem JavaScript aktivieren, fügen Sie eine neue <input type="text" name="activity[1].activity"> . (Zum Beispiel - natürlich werden Sie den Index erhöht)

Eine weitere Option, die ich für kompliziertere Kontrollen verwendet habe, ist der HTML-Code der bestehenden Kontroll greifen (die die Springform erstellt wurden: Input-Tag) und es klonen, die Indizes mit der erhöhten Zahl zu ersetzen. Dies wird viel einfacher, wenn Sie jQuery verwenden.

HINZUFÜGEN Editiert: Ein Problem, das Sie Probleme verursacht: Sie Ihr neues Eingabefeld an das Ende des äußeren div ( „text“) angehängt, was bedeutet, dass es nicht innerhalb der Form-Tags. Das wird nicht funktionieren.

Andere Tipps

Ist <form:input> ein JSP-Tag? Wenn ja, dann clientseitige Javascript <form:input> Knoten zum DOM hinzufügen keine Wirkung -. Da die Server-Seite JSP-Engine diejenigen, die nicht zu interpretieren ist

Ihr Javascript muss mit rohen HTML und DOM arbeiten, wie ein <input> Element hinzugefügt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top