Pit: Form in Form / Nested Forms (2)

Beitrag lesen

Hallo Felix (und natürlich auch alle anderen Helfer),

schön, dass Du Dir die Zeit für eine ausführlichere Antwort genommen hast. Als Helfender fühlt man sich so wesentlich ernster genommen.

Du hast Recht. Normalerweise versuche ich wirklich immer, zu antworten. Aber ich war einfach nur noch frustriert, was diese Formulare anging.

Im Ernst, ich habe seitdem versucht, meinen Code so umzubauen, dass nur noch 1 Formular daraus resultiert und bin immer wieder an verschiedenen Ecken auf andere Probleme gestoßen.

Schade, dass Du diesen Prozess im alten Thread nicht dokumentiert hast. Vielleicht hätte man Dir bei der einen oder anderen "Ecke" andere Lösungswege aufzeigen können, als Du sie offensichtlich nach wie vor verfolgst. Was Du in Wirklichkeit zu erreichen suchst, ist nach wie vor unklar, da wir nur von nested forms sprechen, nicht aber von dem, was Du tatsächlich baust.

Ich finde es auch unglaublich kompliziert, es zu erklären. Teilweise baut es auch auf Code auf, den ich vor x Jahren erstellt habe ud in dem ich selber nicht mehr 100%ig drin bin. Der Kern dessen, was relevant ist: Ich habe ein Formular, das 3 Themenfelder hat, die jeweis mehrere zu editierende Unterpunkte haben. Nun habe ich die Editmöglichkeit des 3. Themenfeld ausgetauscht gegen eine, die ich bereits in einem anderen Script verwende. In dem anderen Script geht das, weil dort voneinander unabhängige Formulare arbeiten. Diese Editiermöglichkeit wird per Include eingebunden. Das Schöne an ihr ist, dass der zu editierende Unterpunkt ein eigenes Formular einblendet. So kann nach Absenden auch nur dieser Unterpuinkt serverseitig verarbeitet werden. Das geht aber nur, wenn die beiden ersten themenbereiche jeweils eigene Formulare haben. Das ist im aktuellen Script aber bisher nicht der Fall. Dort waren bisher die 3 Themenbereiche in einem einzigen Formular und genau deshalb kann ich das Script für den 3. themenbereich nichte infach genauso einbinden, wie in dem anderen Script, wo die Themenbereiche getrennt sind.

Also: Script1:


Thema A
<form>
Unterpunkt 1
Unterpunkt 2
...
</form>
Thema B
<form>
Unterpunkt 1
...
</form>
Thema C
<form> (über include eingebunden)
Unterpunkt n (n = angeklickter Unterpunkt)
</form>

Script2:

Thema A
<form>
Unterpunkt 1
Unterpunkt 2
...
Thema B
Unterpunkt 1
...
Thema C
<form>
Unterpunkt n (n = angeklickter Unterpunkt)
</form>

Script 2 = Nicht valide und funktioniert nicht.

Letztendlich hatte ich also 1 Formular, 2 Absendebuttons und je nach Button kamen verschiedene Daten durch.

Das klingt doch nach Erfolg!

Nicht wirklich. Ich hatte nicht den Eindruck, Kontrolle darüber zu haben, daher wollte ich ja auch den Vergleich von Client-Daten zu Server-Daten haben, damit ich sehe, was ich absende und was ankommt.

Mein Versuch, per JS nachzuscheuen, welche Daten denn vom Client wirklich abgesendet wurden, schlug leider auch fehl.

Wieso "auch"? Du wolltest doch unterschiedliche Server-Reaktionen auf verschiedene Buttons hin!

Nein, eigentlich wollte ich nur 1 Button haben, je nachdem ob ich in Thema 3 einen Editlink geklickt hatte oder nicht.

Was ist speziell daran fehlgeschlagen? Dass Du mittels JavaScript etwas nachsteuern möchtest, leuchtet mir ein. Das Formular bei seinem submit-Event abzufangen und den verwendeten Submit-Button zu ermitteln, ist sicherlich möglich.

Es ging mir nicht um den Button... ich wollte alle abgesendeten Formular Keys und Values haben.

Von den anderen Problemen ganz zu schweigen.

Nein! Schweigen hilft Dir hier nicht weiter! Sprich es an, beschreibe alles, was Du da tust, damit man Dir helfen kann. Online-Beispiele können unsere Einsichten übrigens sehr stark beschleunigen.

Das war mein nächstes Problem. Es ist ein wirklich großes Script (ca. 3000 Zeilen ohne includes), welches das HTML generiert, je nachdem, was man gerade in diesem Berewich machen möchte. Und ein Teil des Quelltextes ist nicht direkt sichtbar, weil er über JS generiert wird. Leider ist es mir nicht gelungen, das auf den relevanten Quelltext zu reduzieren und zugehbar zu machen.

Das ganze Thema nervt mich inzwischen mehr als das es mir Spaß macht und ich wäre in diesem Fall für eine schmutzige lösung recht dankbar, das ist wohl der Hintergrund.

Nee, lass uns das mal "richtig" machen. Dann klappt's auch mit später hinzugeflanschten Erweiterungen, weil es vom Konzept her stimmt.

Ok.... ich werds nochmal neu angehen.

Die saubere Lösung, selbst wenn sie dann läuft, wird neue Probleme aufwerfen, denn dann müßte ich im Rahmen eines einheitlichen designs auch andere Stellen im Gesamtprozess ändern...

Aha! Du redest von Design! Das hat mit der Funktionalität zuerst einmal überhaupt nichts zu tun! Wenn Du eine "user experience" mit "Design" verwechselst, dann können wir darüber reden, wie man mit JavaScript diese unter den gegebenen serverseitigen Funktionalitäten verbessert. Aber zuerst muss das Prinzipielle passen!

Zur Klärung: Eigentlich ist das Design jetzt schon nicht einheitlich (siehe Skizze oben). Die 3 Formulare des Script1 sind jetzt schon nicht identisch mit dem Konstrukt in Script2, weder funktional noch designmäßig. Das war aber bislang nicht schlimm, weil in Script2 noch ein bislang unerwähnter (und auch zu lang zu erklärender) Zusatz beinhaltet ist, durch den ein 100% indetisches Design nicht unabdingbar nötig war. Es ist eher so, dass je mehr ich daran bastele, desto eher muß ich das andere Script auch "verbasteln"... ich bin da momentan sehr hin- und hergerissen... (merkt man sicher auch dem Post an.. und daher rührt auch, dass ich es am liebsten möglichst gar nicht angefasst hätte oder es "schmutzig " gelöst haben wollte.

das ist einer der Gründe, warum mir eine schmutzige Lösung hier sogar lieber wäre.

Finger weg! Tu Dir das nicht an! Ich spreche aus leidvoller Erfahrung!

Ach, so schlimm wärs an der Stelle sicher gar nicht. Aber ich habe den Eindruck, dass ich auch gar nicht so viel Arbeit dadurch sparen würde...das stört mich noch mehr... 😟

Aber Du hast Recht... ich werde es nochmal angehen. Danke auch für die aufbauenden Worte.

Gruten Rutsch und Gruß, Pit

0 66

Form in Form / Nested Forms (2)

Pit
  • javascript
  1. 0
    Mitleser
    1. 0
      Pit
      1. 0
        MudGuard
        1. 0
          Mitleser
        2. 0
          Pit
          1. 3
            Mitleser
      2. 0
        Mitleser
    2. 0
      Gunnar Bittersmann
      • dom
      • html
      1. 0
        ursus contionabundo
        1. 0
          Gunnar Bittersmann
          1. 0
            ursus contionabundo
            1. 0
              Gunnar Bittersmann
              1. 0
                ursus contionabundo
                1. 1
                  Gunnar Bittersmann
                  1. 0
                    ursus contionabundo
                    1. 0
                      Gunnar Bittersmann
                      1. 0
                        ursus contionabundo
                        1. 0

                          War kein kutes Beispiel.

                          ursus contionabundo
              2. 0
                Tabellenkalk
                1. 0
                  Gunnar Bittersmann
                  • sprache
  2. 0
    ursus contionabundo
  3. 0
    Felix Riesterer
    • meinung
    1. 1
      Pit
      1. 0
        Felix Riesterer
        1. 0
          Gunnar Bittersmann
          • design
          • meinung
          1. 0
            ursus contionabundo
        2. 0
          Pit
          1. 0
            pl
            1. 0
              Felix Riesterer
              1. 0
                pl
                1. 0
                  Felix Riesterer
                2. 1
                  dedlfix
                  1. 0
                    pl
                    1. 1
                      Matthias Apsel
                      1. 0
                        pl
                        • zu diesem forum
                        1. 6

                          Framework

                          Orlok
                          • moderation
                          1. 0
                            Matthias Apsel
                          2. 0

                            Die Energie des Verstehens!

                            pl
                            • zu diesem forum
                            1. 0
                              Gunnar Bittersmann
                              1. 0
                                pl
                            2. 2
                              Christian Kruse
                              • moderation
                            3. 0
                              Matthias Apsel
                  2. 0
                    Pit
                    1. 0
                      dedlfix
                      1. 0
                        Pit
                        1. 0
                          dedlfix
                          1. 0
                            Pit
                        2. 0
                          Felix Riesterer
                          1. 0
                            Pit
                            1. 0
                              Felix Riesterer
                              • php
                              1. 0
                                Pit
                                1. 0
                                  Felix Riesterer
                                  1. 0
                                    Pit
                                    1. 0
                                      Felix Riesterer
                                      1. 0
                                        Pit
                                        1. 0
                                          Matthias Apsel
                                          1. 0
                                            Pit
                                          2. 0
                                            Gunnar Bittersmann
                                            • html
                                            1. 0
                                              Pit
                                              1. 0
                                                Felix Riesterer
                                                1. 1
                                                  Matthias Apsel
                                              2. 0
                                                Gunnar Bittersmann
                                                1. 0
                                                  Matthias Apsel
                                                2. 0
                                                  Pit
                                            2. 0
                                              Matthias Apsel