tec: Formularfelder dynamisch erstellen

Ich möchte für ein browsergestütztes Steuerungssystem gern dynamisch Formulare erstellen, also je nach Auswahl einer Funktion in meiner Oberfläche in einem anderen (nicht sichtbaren) Frame ein Formular generieren und abschicken.
Eine Alternative wäre, sämtliche möglichen Formulardaten in diesem Frame zu speichern, da die Oberfläche aber durchaus größer werden kann, möchte ich dieses lieber nicht tun.
Hat wer eine Idee, wie ich das am einfachsten realisiere?

P.S.: kann ich per javascript eigentlich den SRC eines Bildes ändern (und dieses Bild anzeigen) ohne die Seite neu zu laden?

  1. Hallo,

    Ich möchte für ein browsergestütztes Steuerungssystem gern dynamisch Formulare erstellen, also je nach Auswahl einer Funktion in meiner Oberfläche in einem anderen (nicht sichtbaren) Frame ein Formular generieren und abschicken.

    wenn die Formulardaten per get verschickt werden kannst du dir das ganze Formulardrumherum sparen. Dann langt es doch wenn du den Paramterstring generierst.

    parent.SeinName.location.href = "action.html?foo=bar";

    P.S.: kann ich per javascript eigentlich den SRC eines Bildes ändern (und dieses Bild anzeigen) ohne die Seite neu zu laden?

    klar kannst du das. http://de.selfhtml.org/javascript/objekte/images.htm#src

    Grüße,

    Jochen

    --
    Heute schon gescribbelt?
    Scribbleboard
    1. Sowas dachte ich mir schon.

      Gibt es beim Get irgendeine Begrenzung was das übertragene Datenvolumen angeht?

      1. Hi tec,

        Gibt es beim Get irgendeine Begrenzung was das übertragene Datenvolumen angeht?

        ja, allerdings gibt es kein definiertes Maximum. Allgemein wird empfohlen, dass die Länge des Query-String 1kB nicht übersteigt.
        Wenn du mehr Daten übertragen möchtest, dann bleibt nur "post" Und dann brauchst du natürlich ein Formular. Etwa so:

          
          inp=document.createElement("input");  
          inp.setAttribute("type","text");  
          inp.setAttribute("value","Der Wert");  
          document.getElementById("...").appendChild(inp);  
        
        

        HTH

        Jochen

        --
        Heute schon gescribbelt?
        Scribbleboard
        1. so, ich habs jetzt erstmal so gelöst:

          function putform(formular) {
             getstring = 'winproc.php?';
             for (var element in formular.elements) {
              getstring = getstring + element.name + "=" + element.value + "&";
             }

          parent.data.document.forms.winproc.action = getstring;
             parent.data.document.forms.winproc.submit();

          }

          dies wird als action, beispielsweise in diesem Formular abgesetzt:

          <center>
          <form id="fsource" action="javascript:putform(this);">
           <input type="hidden" name="action" value="test">
           <input type="text" name="meintext" id="meintext" value="name"><br>
           <input type="submit" value="Senden">
          </form>
          </center>

          Mein Zielformular sieht so aus:
          <center>
          <form id="fdest">
           <input type="hidden" name="action" value="test">
           <input type="text" id="deintext"><br>
          </form>
          </center>

          Die winproc.php tut dieses hier:

          <html>
           <head>
            <SCRIPT type=text/javascript>
             <!--
              function startit() {
               for (var data in document.forms[0].elements) {
                 parent.frames.main.document.getElementById(data.name).value = data.value;
               }
              }

          //-->
            </SCRIPT>
           </head>
           <body onload="startit();">
          <!-- Formularfeld mit Fensterdaten -->
            <FORM id=winproc action=winproc.php method=post>
            %formdata%
            </FORM>
           </body>
          </html>

          wobei %formdata% dynamisch mit hidden inputs gefüllt wird.

          Allerdings ist schon der getstring scheinbar nicht richtig zusammen gesetzt.
          Als Fehler bekomme ich ein
          parent.frames.main.document.getElementById(...) ist NULL oder kein Objekt (winproc). (Leider habe ich nur den IE als Browser und nen TextPAD zum Entwickeln)

          1. Hallo,

            Die winproc.php tut dieses hier:
                function startit() {
                  ... getElementById(data.name).value = data.value;

            ^^^^^^^^^
                                      name oder id?

            sorry wenn ich dir nicht weiterhelfen kann. Aber das Ganze scheint mir etwas undurchsichtig.

            Viele Grüße,

            Jochen

            --
            Heute schon gescribbelt?
            Scribbleboard