Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

mehrere forms html

Empfohlene Antworten

Veröffentlicht

Hallo,

kann ich mehre Forms auf einer html-seite verwenden, und diese ineinander verschachteln?

Beispiel:


<form name=main>
<form name=sub0>
</form name=sub0>
<form name=sub1>
</form name=sub1>
...
</form name=main>
[/PHP]

form

...

Kindelemente:

1. nach Seite HTML Strict:

[block-Elemente] (außer form) | script

2. nach Seite HTML Transitional:

[block-Elemente] (außer form) | [inline-Elemente]

...

Mehrere Formulare kannst du verwenden, aber kein Form in einem anderen.

Was soll das überhaupt bringen?


<form name="form1" ... >

</form>

</form name="form2" ... >

</form>

...

Das ist ok, und dein Konstrukt tut ja nichts anderes...

Was soll das überhaupt bringen?
Solche Situationen hab ich irgendwie ziemlich oft. Nämlich dann, wenn es einen ganzen Rutsch Eingabefelder gibt, und über zwei Buttons zwei verschiedene Aktionen mit den Werten ebendieser Eingabefelder vorgenommen werden sollen(zB "Vorschau" und "Erstellen"). Da zwei Formulare mit unterschiedlichen Programmen dahinter für beide Fälle definiereren bringt in der Regel wenig, speziell wenn die Aktionen in weiten Teilen recht ähnlich sind.

Die "simple" Lösung besteht darin, zwei Submit-Buttons mit unterschiedlichen Werten einzubauen, und diesen Wert dann entsprechend im Folgeprogramm auszuwerten - irgendwie hab ich das noch nie wirklich gemacht:hells:... Etwas eleganter (aber nicht immer akzeptabel) ist eine Lösung per Javascript (nur mal schnell hingeschmiert):


<script type="text/javascript" language="JavaScript">

function DoVorschau() {

    // action 2 = Vorschau

    document.meineform.action='2'; 

    meineform.submit();

}

</script>

[...]

<form name="meineform">

[...]

<!--- Standard-Action 1= Erstellen -->

<input type="hidden" name="action" value="1">

<input type="submit" [...]>

<input type="button" value="Vorschau" onClick="javascript:DoVorschau();"[...]>

</form>

und wieso nicht ein Form und ein Submitbutton ? im nächsten Dokument hast du eben paar variablen mehr -> NA UND ?

und wieso nicht ein Form und ein Submitbutton ? im nächsten Dokument hast du eben paar variablen mehr -> NA UND ?
Das klappt halt so pauschal nicht immer... siehe mein Beispiel. Natürlich könnte ich nach dem Submit noch eine weitere Seite anzeigen, wo der User erstmal auswählen darf, ob er nur eine Vorschau oder gleich das fertige Ergebnis erhalten darf. Aber sonderlich benutzerfreundlich ist das hier wohl nicht (mal abgesehen davon, dass mein Kunde das idR so nicht will).

Es kommt also immer darauf an...

Solche Situationen hab ich irgendwie ziemlich oft. Nämlich dann, wenn es einen ganzen Rutsch Eingabefelder gibt, und über zwei Buttons zwei verschiedene Aktionen mit den Werten ebendieser Eingabefelder vorgenommen werden sollen(zB "Vorschau" und "Erstellen"). Da zwei Formulare mit unterschiedlichen Programmen dahinter für beide Fälle definiereren bringt in der Regel wenig, speziell wenn die Aktionen in weiten Teilen recht ähnlich sind.

Die "simple" Lösung besteht darin, zwei Submit-Buttons mit unterschiedlichen Werten einzubauen, und diesen Wert dann entsprechend im Folgeprogramm auszuwerten - irgendwie hab ich das noch nie wirklich gemacht:hells:...



<form name="form1"...>

...

<input type="submit" name="submit" value="Vorschau" />
<input type="submit" name="submit" value="Speichern" />
</form>


#php
if ($_POST["submit"] = "Vorschau")
{
...
}
else if ($_POST["submit"] = "Speichern")
{

}
[/php]

(nur mal schnell hingeschmiert)

Zur unterschiedlichen weiteren Behandlung der übermittelten Daten können Sie mehrere Absendebuttons mit name-Attribut verwenden.

[/Quote]

Hmpf, jetzt weiss ich auch, warum ich das nicht so machen konnte... unsere hauseigene Perl-Standardbibliothek packt alle übergebenen Formularfelder, die eine bestimmte Namenskonvention erfüllen, in einen Hash, und überschreibt alles andere (aus welchen Gründen auch immer) mit NULL - somit komm ich an den Value des submit gar nicht direkt ran... naja ok diese Einschränkung kann ich noch aufheben.

Allerdings hab ich so das dumpfe Gefühl, dass es dann (zumindest für mich) noch immer Fälle gibt, wo meine Javascript-Murkserei Sinn ergeben könnte - an gerade sowas hock ich aktuell auch dran. Bezogen auf mein Beispiel soll das "Ergebnis" (PDF) in einem neuen Browserfenster aufgehen (target="_blank") während die Vorschau (HTML) im aktuellen Frameset (target="inhalt") angezeigt werden soll. Oder krieg ich das auch mit nur einem Form und ohne JS hin? *grübel* (ist hier aber nicht soo wichtig, da die Anwendung aus anderen Gründen ohne JS nicht geht)

Bezogen auf mein Beispiel soll das "Ergebnis" (PDF) in einem neuen Browserfenster aufgehen (target="_blank") während die Vorschau (HTML) im aktuellen Frameset (target="inhalt") angezeigt werden soll. Oder krieg ich das auch mit nur einem Form und ohne JS hin? *grübel*

Da nur das Form selber das Attribut "target" unterstützt, wirdst du das einfach so nicht hinbekommen. Also nur, mit Javascript eben, indem du im Form beispielsweise bei onsubmit prüfst, welcher Button gedrückt wurde... naja, dann kann man es ja aber eh gleich ganz per Javascript machen (wie in deinem Beispiel).

So schlecht ist die JS Lösung auch wieder nicht, hab es auch schon so gelöst, weil JS für diese Funktionalität eh notwendig war (die Seite selber war ohne JS nutzbar, aber die Admin Funktionalität eben nur mit).

Ohne JS könntest du es nur über ein PopUp lösen (von der aufgerufenen Seite aus)... aber auch nicht gerade schön.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.