Manu: Verständnisproblem...

Hallo zusammen,

ich habe hier ein kleines Verständnisproblem:

In einem HTML-Formular habe ich eine Reihe von versteckten Feldern (input type="hidden"), die ich über ein css-Popup (Overlay) befüllen möchte. Diese werden nach Abschicken übermittelt.

Um sie zu befüllen, habe ich mir zusätzlich eine versteckte Tabelle gebaut, die input-Felder enthält.
Klicke ich nun auf einen Button, wird diese Tabelle in das Popup kopiert (via innerHTML; das ist wahrscheinlich die Crux)und die ursprüngliche Tabelle gelöscht. Dies ist nötig, damit ich nach dem Kopieren keine doppelten ids der input-Felder habe.

Im Popup gebe ich nun die Daten ein, nach Klick auf meinen Speichern-Button kopiere ich die eingegebenen Daten in die versteckten Felder. Danach kopiere ich die Tabelle aus dem Popup wieder an die ursprüngliche Stelle, lösche sie aus dem Popup und verstecke das Popup.

Das Problem ist, dass ich beim erneuten Öffnen des Popups die vorher eingegebenen Daten nicht mehr habe (ich vermute das Kopieren via innerHTML ist Schuld, das kann ich aber leider nicht ändern).

Jedenfalls bin ich weitergekommen, indem ich die Daten aus den versteckten Feldern in die Tabelle zurückkopieren wollte:

$('data.extrax.entry').value = $('data.extra.entry').value;

Das funzt aus irgendeinem Grunde nicht (das ist mein Verständnisproblem).

Gehe ich es so an:
$('data.extrax.entry').writeAttribute('value',$('data.extra.entry').value);
klappts...

Vielleicht kann mich ja einer erleuchten...
Im Quellcode steht jedenfalls der leere value (bspw. <input type="text" id="data.extrax.entry" value="" />)

Bittebitte, keine Kommentare, warum ich das so mache - oder überhaupt böses JS verwende - das bringt mich nicht wirklich weiter...

Gruß,
Manu

  1. Liebe Manu,

    das "Umkopieren" via innerHTML erzeugt sozusagen Klone von den ursprünglichen HTML-Elementen. Wäre es nicht sinnvoller, die entsprechenden Original-Elemente in der Popup-Box anzeigen und ausfüllen zu lassen? Damit ersparst Du Dir das anscheinend fehlerbehaftete Herumkopieren. Vergiss nicht, Du manipulierst hier heftig das DOM nur um visuelle Ergebnisse zu erhalten... was eigentlich eine mit CSS zu lösende Aufgabe sein sollte.

    Dein <input type="hidden" /> ist nicht wirklich notwendig. Du könntest genauso gut type="text" benutzen und per CSS unsichtbar (display:none) schalten. Damit wäre das Einblenden in der Popup-Box dann keine Unmöglichkeit mehr.

    habe ich mir zusätzlich eine versteckte Tabelle gebaut,

    Wenn Deine Dokumentstruktur sinnvoll gewählt ist (die Tabelle klingt nach Murks), sollte das Anzeigen in der Popup-Box kein echtes Problem mehr sein.

    Könntest Du eine entsprechend beschnittene Beispielseite hochladen, damit man sieht, was Du genau zu erreichen versuchst?

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hallo Felix,

      erstmal vielen Dank für Deine Antwort.

      Das Umkopieren ist sicher nicht so sinnig - ich sitze sowieso schon viel zu lange an dem Problem. Allerdings komme ich auf keine bessere Idee.

      Der Knackpunkt ist sicher die Fremdbibliothek Prototip, die das Popup erzeugt. Diese erwartet als zweiten Parameter einen String oder Element, der dann im Popup dargestellt wird - in diesem Falle die Tabelle mit den Inputs. Dass das allerdings so viele Probleme bereitet, hätte ich nicht gedacht.

      Meine Versuche, den Popup-Inhalt per Copy des Knotens (plus Unterknoten) zu erstellen, hat es leider nicht gebracht. Hier komme ich im späteren Verlauf nicht mehr ran...

      Auch die Möglichkeite, die versteckten input-Felder dafür zu benutzen, schlugen leider fehl, da die Benutzerdaten nach Kopieren des Blocks nicht mehr vorhanden waren.

      Ich sitze hier leider an dieser recht komplexen Backend-Benutzeroberfläche, um was Zeigbares hervorzuzaubern, bräuchte ich eine ganze Weile. Mir rennt leider jetzt schon die Zeit davon...

      Gruß,
      Manu

      1. Lieber Manu,

        Der Knackpunkt ist sicher die Fremdbibliothek Prototip, die das Popup erzeugt.

        warum sollte die Schuld sein? Kann es sein, dass das Application Design einen gehörigen Knacks hat? Im Grunde willst Du doch nur einen HTTP-Request mit POST abschicken. Wie die Daten zusammengestellt werden ist doch für das Backend egal! Dann schau, dass Du diesen Teil hinbekommst, völlig ohne JS und Prototip.

        Wenn Deine Daten korrekt erhalten und verarbeitet werden, dann kannst Du immer noch mit JS Dein Frontend aufhübschen. Und da stellt sich allen Ernstes die Frage, ob Deine Herangehensweise wirlich so sinnvoll ist. Gerade bei Deinem Zeitdruck!

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Hallo Felix,

          warum sollte die Schuld sein? Kann es sein, dass das Application Design einen gehörigen Knacks hat? Im Grunde willst Du doch nur einen HTTP-Request mit POST abschicken. Wie die Daten zusammengestellt werden ist doch für das Backend egal! Dann schau, dass Du diesen Teil hinbekommst, völlig ohne JS und Prototip.

          Schuld ist relativ. Habs damit so nicht ohne weiteres hinbekommen.

          Das Übermitteln der Daten war/ist ja an für sich nicht das Problem, sondern die Darstellung: Für ein mehr oder weniger selten gebrauchtes Feld sollte es die Möglichkeit geben, einen Haufen unterschiedlichster Daten einzugeben. Und das, ohne das Layout zu zerschießen oder den Fokus zu sehr darauf zu lenken.

          Das Speichern war nicht das Issue, warum ich mich hilfesuchend hierhin gewendet habe.

          Woher in diesem Forum immer solche Gewissheiten kommen, ist mir schon ein Rätsel ;)

          Gruß,
          Manu

      2. Hi,

        Der Knackpunkt ist sicher die Fremdbibliothek Prototip, die das Popup erzeugt. Diese erwartet als zweiten Parameter einen String oder Element, der dann im Popup dargestellt wird - in diesem Falle die Tabelle mit den Inputs. Dass das allerdings so viele Probleme bereitet, hätte ich nicht gedacht.

        *Wie* hast du es denn versucht?

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Hallo ChrisB,

          *Wie* hast du es denn versucht?

          Sowohl per Übergabe des Elements mit der Input-Table, als auch mit innerHTML.
          Habs aber inzwischen hinbekommen. War zwar etwas hakelig, aber das Ergebnis ist ganz ansehnlich...

          Gruß,
          Manu

          1. Liebe Manu,

            War zwar etwas hakelig, aber das Ergebnis ist ganz ansehnlich...

            wenn Du damit zufrieden bist... dann ist ja alles bestens.

            Liebe Grüße,

            Felix Riesterer.

            --
            ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
            1. Hallo Felix,

              wenn Du damit zufrieden bist... dann ist ja alles bestens.

              ja, das js ist schon recht komplex, aber läuft stabil...
              danke für deine Unterstützung ;)

              Gruß,
              Manu