trunx: Reihenfolge der Befehle

Hallo Forum,

wenn ich eventhandler in ein Formularscript einbaue, in welcher Reihenfolge werden diese dann abgearbeitet? Z.B.

<form ... onsubmit="machwas1()">
  <a href="javascript:machwas2()" onclick="machwas3()">
    <img ...Buttonbild...>
  </a>
</form>

ist jetzt beim Klicken auf den Submit-Button die Reihenfolge

  • machwas3()
  • machwas2()
  • machwas1()
  • tatsächliches Abschicken des Formulars ?

Es geht unter anderem darum, welche der obigen Funktion den Befehl document.form[0].submit() enthalten muss (vermutlich machwas2()); ich habe mehrere solcher Buttonbilder und 2 input-hidden-Felder, deren Werte durch unterschiedliches Klicken geändert werden sollen.

bye trunx

--
Die Standard-Antwort: "Bitte benutze die Forum-Suche!" macht die Forum-Suche kaputt, weil die Suche dann nämlich genau vor allem diese dämliche Standard-Antwort, also Müll liefert. Sinnvoller ist stattdessen folgende Standard-Antwort: "Dieses Thema wurde schon vielfach im Forum besprochen, siehe z.B. <a>hier</a> oder <a>hier</a> oder benutze die Forum-Suche z.B. mit den Stichworten 'Stichwort1 Stichwort2'." Danke.
  1. Hallo trunx,

    warum schreibst Du nicht eine Funktion, die alle drei Funktionen in der gewünschten Reihenfolge aufruft? In diesem Fall ist auch klar, welche Funktion das Formular absendet, wobei ohne negative return-Anweisung das Formular so oder so verschickt wird am Ende.

    function sendeAb() {  
      tuWas1();  
      tuWas2();  
      tuWas3();  
      return false; // wenn abschicken verhindert werden soll  
    }
    

    Mit freundlichem Gruß
    Micha

  2. Mahlzeit trunx,

    wenn ich eventhandler in ein Formularscript einbaue, in welcher Reihenfolge werden diese dann abgearbeitet? Z.B.

    Der in einem Eventhandler enthaltene Code wird genau dann abgearbeitet, wenn das Ereignis eintritt.

    <form ... onsubmit="machwas1()">

    Wenn das Formular abgeschickt wird, wird die Funktion machwas1() ausgeführt.

    <a href="javascript:machwas2()"

    Es gibt kein Protokoll namens "javascript:" - dieser Link ist Blödsinn.

    onclick="machwas3()">

    Wenn der Link angeklickt wird, wird die Funktion machwas3() ausgeführt.

    ist jetzt beim Klicken auf den Submit-Button die Reihenfolge

    Ich sehe keinen Submit-Button. Ich sehe nur einen Link, der eine Grafik enthält.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hi,

      <a href="javascript:machwas2()"

      Es gibt kein Protokoll namens "javascript:" - dieser Link ist Blödsinn.

      hmm, also ich habe gelernt, dass dies ein Pseudoprotokoll ist...du kannst ja sagen, dass du das für Blödsinn hältst, aber so einfach ist das ja wohl nicht. Gib in die Adresszeile deines Browsers "javascript:alert('Hallo')" ein und er wird die Meldung rausgeben. Warum, wenn's doch Blödsinn ist.

      bye trunx

      --
      Die Standard-Antwort: "Bitte benutze die Forum-Suche!" macht die Forum-Suche kaputt, weil die Suche dann nämlich genau vor allem diese dämliche Standard-Antwort, also Müll liefert. Sinnvoller ist stattdessen folgende Standard-Antwort: "Dieses Thema wurde schon vielfach im Forum besprochen, siehe z.B. <a>hier</a> oder <a>hier</a> oder benutze die Forum-Suche z.B. mit den Stichworten 'Stichwort1 Stichwort2'." Danke.
      1. Mahlzeit trunx,

        <a href="javascript:machwas2()"

        Es gibt kein Protokoll namens "javascript:" - dieser Link ist Blödsinn.

        hmm, also ich habe gelernt, dass dies ein Pseudoprotokoll ist...

        Eben. Kein echtes. Aber darum geht's nur nebenbei:

        du kannst ja sagen, dass du das für Blödsinn hältst, aber so einfach ist das ja wohl nicht.

        Doch, so einfach ist das: ich habe geschrieben, dass der Link Blödsinn ist. Und das ist er, weil er nicht tut, was ein Link tun soll und wofür er existiert: verlinken.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  3. Hi,

    Es geht unter anderem darum, welche der obigen Funktion den Befehl document.form[0].submit() enthalten muss

    keine. Das Formular wird durch den Submit-Button abgesendet, den einzufügen Du vergessen hast. Der "Link" ist völlig nutzfrei und widersinnig; er ist ein zur Verlinkung einer Ressource bestimmtes HTML-Element, welches keine Ressource verlinkt. Entferne ihn.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      Es geht unter anderem darum, welche der obigen Funktion den Befehl document.form[0].submit() enthalten muss

      keine. Das Formular wird durch den Submit-Button abgesendet, den einzufügen Du vergessen hast. Der "Link" ist völlig nutzfrei und widersinnig; er ist ein zur Verlinkung einer Ressource bestimmtes HTML-Element, welches keine Ressource verlinkt. Entferne ihn.

      Danke auch dir für deine Antwort - warum habe ich auch bei dir das Gefühl, dir persönlich auf den Schlips getreten zu sein? Warum bestimmst du mit was für einer Ressource mein Link verknüpft ist, warum muss diese Ressource unbedingt eine weitere html-Seite sein und warum keine Funktion? Warum gibt es die submit() Funktion, wenn ein Formular grundsätzlich nur über den submit-Button abgeschickt werden darf?

      Wie ich oben geschrieben habe, soll eine javascript Anwendung, die nicht allgemein zugänglich sein soll, erstellt werden, in der die Funktionen unter grafische Buttons liegen sollen und so auch das Abschicken des gesamten Formulars. Allerdings soll der Anwender eben gerade nicht die Formularstruktur erkennen, s.d. bestimmte gesetzte Werte in input-hidden-Felder eingetragen werden sollen, u.z. logischerweise vor dem Abschicken, daher meine Frage nach der Reihenfolge.

      naja, ich verstehe schon, dass eine Lösung mit <span onclick="">...</span> und css: span { cursor: pointer; } usw. wahrscheinlich eher nach deinem Geschmack wäre, aber ehrlich gesagt, ist das für mich widersinnig :-)

      bye trunx

      --
      Die Standard-Antwort: "Bitte benutze die Forum-Suche!" macht die Forum-Suche kaputt, weil die Suche dann nämlich genau vor allem diese dämliche Standard-Antwort, also Müll liefert. Sinnvoller ist stattdessen folgende Standard-Antwort: "Dieses Thema wurde schon vielfach im Forum besprochen, siehe z.B. <a>hier</a> oder <a>hier</a> oder benutze die Forum-Suche z.B. mit den Stichworten 'Stichwort1 Stichwort2'." Danke.
      1. Mahlzeit trunx,

        Danke auch dir für deine Antwort - warum habe ich auch bei dir das Gefühl, dir persönlich auf den Schlips getreten zu sein?

        So ist Cheatah halt (manchmal). Das ändert aber nichts daran, dass er Recht hat.

        Warum bestimmst du mit was für einer Ressource mein Link verknüpft ist, warum muss diese Ressource unbedingt eine weitere html-Seite sein und warum keine Funktion?

        Weil das so in der HTML-Spezifikation http://de.selfhtml.org/html/referenz/attribute.htm#a@title=festgelegt ist und das Pseudoprotokoll "javascript:" in RFC 2396 nicht vorkommt. Weder Cheatah noch sonstwer hier im Forum bestimmt mit, mit welchen Ressourcen Du Deine Links verknüpfst - aber wenn Du behauptest, HTML zu schreiben, solltest Du das auch tun. Und so etwas wie "Funktionen" kennt HTML nicht.

        Warum gibt es die submit() Funktion, wenn ein Formular grundsätzlich nur über den submit-Button abgeschickt werden darf?

        Das eine ist ein Strukturelement in HTML, das andere eine Funktion in Javascript ... Äpfel und Birnen.

        Wie ich oben geschrieben habe, soll eine javascript Anwendung, die nicht allgemein zugänglich sein soll, erstellt werden, in der die Funktionen unter grafische Buttons liegen sollen und so auch das Abschicken des gesamten Formulars.

        Dann ist ein Link aber trotzdem das falsche Element. Du kannst Deinen grafischen Buttons (sind das echte <button>-Elemente oder meinst Du damit einfache <img>?) ein "onclick"-Eventhandler verpassen, so dass beim Klick Deine gewünschte Funktion aufgerufen wird. Dass das Formular dann ohne Javascript nicht benutzbar ist, spielt ja keine Rolle, da es sich um einen geschlossenen Nutzerkreis handelt (allerdings hast Du uns diese Information zu Anfang verschwiegen - wie also sollen wir das wissen?!).

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. so, ich hab's jetzt alles umgeschrieben - eine Heidenarbeit - mit dem <a>-tag kann man :hover benutzen und der Cursor wird automatisch eine Hand, nun musste ich überall ein onmouseover und onmouseout-Attribut setzen und für den IE5.5 cursor: hand; usw., naja

          im übrigen bezog sich mein "wie ich bereits oben geschrieben habe..." nicht auf den Teilsatz, dass die Anwendung nur einem beschränkten Kreis dienen soll (was im fraglichen Zusammenhang relativ unwichtig war), sondern dem anderen Teil, nämlich dass ich grafische Button benutze.

          Aber sei's drum :-)

          ich danke euch trotzdem für die Hilfe - in der Tat ist es nun keine Frage mehr, in welcher Reihenfolge die Befehle abgearbeitet werden.

          bye trunx

          --
          Die Standard-Antwort: "Bitte benutze die Forum-Suche!" macht die Forum-Suche kaputt, weil die Suche dann nämlich genau vor allem diese dämliche Standard-Antwort, also Müll liefert. Sinnvoller ist stattdessen folgende Standard-Antwort: "Dieses Thema wurde schon vielfach im Forum besprochen, siehe z.B. <a>hier</a> oder <a>hier</a> oder benutze die Forum-Suche z.B. mit den Stichworten 'Stichwort1 Stichwort2'." Danke.
      2. Hallo,

        Wie ich oben geschrieben habe, soll eine javascript Anwendung, die nicht allgemein zugänglich sein soll, erstellt werden, ...

        nein, diese entscheidende Information hast du uns zunächst vorenthalten. Also muss man davon ausgehen, dass dein Werk im weiten wilden WWW zugänglich sein wird. Und dann ist auch deine rhetorische Frage

        Warum gibt es die submit() Funktion, wenn ein Formular grundsätzlich nur über den submit-Button abgeschickt werden darf?

        eigentlich Unsinn. Natürlich *darf* ein Formular auch auf andere Weise abgeschickt werden, etwa durch die Javascript-Methode submit(). Aber ein voll funktionstüchtiger Submit-Button muss zunächst mal die Grundfunktion bereitstellen, da viele Clients kein Javascript interpretieren dürfen, können oder wollen.

        Allerdings soll der Anwender eben gerade nicht die Formularstruktur erkennen

        Zur Gestaltung dessen, was der Anwender *sieht*, gibt es CSS. Bedingung ist trotzdem, dass man es auf sinnvoll geschriebenes HTML aufsetzt.

        s.d. bestimmte gesetzte Werte in input-hidden-Felder eingetragen werden sollen, u.z. logischerweise vor dem Abschicken, daher meine Frage nach der Reihenfolge.

        Ich würde mir da gar keine Gedanken wegen der Reihenfolge machen, sondern im onsubmit-Handler schön nacheinander die Schritte ausführen, die vor dem Absenden notwendig sind. Und immer damit rechnen, dass das Formular auch mal ohne diese zusätzlich erledigten Einträge abgeschickt werden könnte.

        naja, ich verstehe schon, dass eine Lösung mit <span onclick="">...</span> und css: span { cursor: pointer; } usw. wahrscheinlich eher nach deinem Geschmack wäre

        Wohl eher mit einem button-Element anstatt eines neutralen span.

        aber ehrlich gesagt, ist das für mich widersinnig :-)

        Hm. Ich find's natürlich und intuitiv.

        Ciao,
         Martin

        --
        Computer funktionieren grundsätzlich nicht richtig.
        Wenn doch, hast du etwas falsch gemacht.