Matthias: Variablenübergabe ohne Submit

Hallo,

Ich möchte die Inhalte eines Formulars ohne klick auf den Submit-Button übergeben.
In diesem Formular befinden sich nur <input type="hidden">-tags, die Inhalte von Variablen an das aufgerufene Dokument übergeben sollen.

Mit Javascript ist das an sich kein Problem:
  document.<formularname>.submit()
Funktioniert, wenn man diese Methode einfach in <script>-tags aufruft.

Ich möchte aber, dass die Dokumentinhalte beim Klick auf einen Link mitgesendet werden:
<a href="gleichesDokument.php?id=neu" onclick="document.<formularname>.submit();">

Und das funktioniert nicht. onclick wird vollständig übergangen (auch andere Javascriptbefehle wurden ignoriert).
Nur wenn ich das attribut href=... vollständig entferne, wird onclick ausgeführt (Das kann ich aus zwei Gründen nicht machen: 1. Brauche ich href= weil es verschiedene links gibt, ich kann also nicht einfach das action= des formulars benutzen und 2. damit sich der Mauszeiger beim "Über-den-Link-fahren" wie gewohnt ändert)

Was mache ich bei dem Link falsch?

Herzliche Grüße,
Matthias.

  1. Hi,

    <a href="gleichesDokument.php?id=neu" onclick="document.<formularname>.submit();">

    entweder Du folgst einem Link, oder Du versendest (per JS) eine Form. Beides geht nicht. Wenn Du onclick verwendest, musst Du mit einem return false den Html-Link abschalten.

    Wenn Du die Form-action nicht nutzen kannst, weil Du verschiedene actions benoetigst, kannst Du mit Javascript darauf zugreifen:

    function go(act) {
        document.myForm.action = act;
        document.myForm.submit();
    }

    <a href="#" onclick="go('neu.php');return false">
    <a href="#" onclick="go('alt.php');return false">

    Gruesse  Joachim

  2. Moin!

    Ich möchte aber, dass die Dokumentinhalte beim Klick auf einen Link mitgesendet werden:
    <a href="gleichesDokument.php?id=neu" onclick="document.<formularname>.submit();">

    Du willst sowohl die ID als auch die Formularelemente haben? Geht so nicht!

    Was passiert, ist folgendes: Zuerst wird onclick wirksam, nimmt die URL in der Formular-Action und ruft (bei GET mit Parametern an der URL, bei POST "nackt") diese durch Submit auf.

    Dann ist onclick zu Ende, und der href wird wirksam. Der Aufruf des Formulars wird gestoppt, die angegebene Seite wird geladen - ohne Formulardaten.

    Und das funktioniert nicht. onclick wird vollständig übergangen (auch andere Javascriptbefehle wurden ignoriert).

    Nein, diese Beobachtung ist falsch.

    Was mache ich bei dem Link falsch?

    Um das Ausführen des href-Teils zu verhindern, mußt du im Eventhandler am Ende "return false" notieren. Dann wird nur das submit() ausgeführt - allerdings kriegst du auf diese Weise die ID nicht mitgesendet.

    Damit das geschieht, gibt es zwei Möglichkeiten:
    1. Du fügst die ID dynamisch per Javascript in ein weiteres Hidden-Feld ein und sendest erst danach.
    2. Du benutzt Submit-Buttons, deren _Namen_ auf die ID schließen lassen. Nur der geklickte Submit-Button wird im Formular mit übertragen.
    3. Du kombinierst beide Methoden und fügst für Javascript-lose Benutzer die Submit-Buttons in einem <noscript>-Bereich ein.

    - Sven Rautenberg

    --
    ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
  3. DANKE Joachim, DANKE Sven! Was ihr sagt ist einleuchtend und wird funktionieren. Ich sollte halt nicht so früh am Morgen arbeiten!

    Matthias