Paul Hellerhoff: Form mit Enter abschicken

Hallo everyone,

mein Problem ist, dass es mir nicht gelingt, ein Formular mit mehr als einer Texteingabezeile mit einfachem Enter abzuschicken. Wenn nur eine Textzeile vorhanden ist: Kein Problem, auch nicht mit mehreren anderen Formelementen (Auswahlisten etc.)

WER WEISS RAT?

Danke!

Ciao
Paul aus Muenchen

  1. Hallo Paul,

    mein Problem ist, dass es mir nicht gelingt, ein Formular mit mehr als einer Texteingabezeile mit einfachem Enter abzuschicken.

    Das ist meines Wissens so definiert in irgendeiner RFC oder dergleichen. Denn bei vielen Betriebssystemen ist es nicht so wie bei MS-Windows, dass man mit TAB durch die Felder eines Formulars wandern kann, sondern mit ENTER. Und bei mehreren Feldern gibt es dann einen Konflikt, weil ENTER eigentlich "weiter" bedeutet und nicht "ab damit". Die Browser setzen das deshalb "plattformuebergreifend" so um.

    Viele Gruesse
      Stefan Muenz

    1. Ich habe schon ueber eine Moeglichkeit nachgesonnen, das trotzdem zu umgehen und bin dabei auf die eventhandler gestossen. Aber die scheinen ja zunaechst nicht auf Netscape zu gehen , oder?

      Ich stelle mir ein Konstrukt nach dem Motto vor:

      <INPUT type=text name="day" size=10 maxlength=10 onKeypress="mysubmit">

      <script language="JavaScript">
      <!--
      function mysubmit()
      {
        if (war_Enter)
        {
          document.forms[0].submit
        }
      }
      //-->
      </script>

      (--- not testet ---)

      Ich brauche das fuer unser Krankenhausintranet, in dem aber nahezu ausschliesslich der Netscape-Browser laeuft....

      Hat jemand noch eine Idee?

      Ciao
      Paul

      1. Hallo Paul.

        Ich habe schon ueber eine Moeglichkeit nachgesonnen, das trotzdem zu umgehen und bin dabei auf die eventhandler gestossen. Aber die scheinen ja zunaechst nicht auf Netscape zu gehen , oder?

        Ich habe mal das folgende probiert, das zwar Netscape-gerecht ist, aber funktioniert hat's leider nicht <g>:

        <html><head><title>Test</title>
        <script language="JavaScript">
        function Tastatur(Ereignis)
        {
        if(Ereignis.which == 13)
           document.Testform.Absenden.click();
        }  
        window.onkeydown = Tastatur;
        </script>
        </head><body>
        <form name="Testform" action="mailto:muenz@csi.com">
        Vorname: <input name="Vorname" > Zuname: <input name="Zuname"><br>
        <input type=submit value="Absenden" name="Absenden">
        </form>
        </body></html>

        Vielleicht findet ja noch jemand den Kasus Knaktus in dem Beispiel.

        Viele Gruesse
          Stefan Muenz

        1. Hallo Paul.

          Zwar weiß ich nicht, warum's nicht funktioniert, aber ich habe mal eine kleine Änderung angemerkt. Vielleicht hilft's ja. Just a thought...

          Felix

          Ich habe schon ueber eine Moeglichkeit nachgesonnen, das trotzdem zu umgehen und bin dabei auf die eventhandler gestossen. Aber die scheinen ja zunaechst nicht auf Netscape zu gehen , oder?

          Ich habe mal das folgende probiert, das zwar Netscape-gerecht ist, aber funktioniert hat's leider nicht <g>:

          <html><head><title>Test</title>
          <script language="JavaScript">
          function Tastatur(Ereignis)
          {

          »»  if(Ereignis.which == 13)

          document.Testform.Absenden.click();

          Statt dessen:   document.Testform.submit();

          }  
          window.onkeydown = Tastatur;
          </script>
          </head><body>
          <form name="Testform" action="mailto:muenz@csi.com">
          Vorname: <input name="Vorname" > Zuname: <input name="Zuname">

          <input type=submit value="Absenden" name="Absenden">
          </form>
          </body></html>

          Vielleicht findet ja noch jemand den Kasus Knaktus in dem Beispiel.

          Viele Gruesse
            Stefan Muenz

          1. Also jetzt eine Version, die mit Netscape Comm 4.03 laeuft (anderes habe ich nicht getestet):
            ----------------------8<-----------------------------

            <html><head><title>Test</title>
            <script language="JavaScript">
            function Tastatur(Ereignis)
            {
            if(Ereignis.which == 13)
            document.testform.submit();
            }
            window.captureEvents(Event.KEYPRESS);
            window.onkeypress = Tastatur;
            </script>
            </head><body>

            <form name="testform" action="/cgi-bin/test.cgi">
            Vorname: <input name="Vorname" > Zuname: <input name="Zuname">
            <input type=submit value="Absenden">
            </form>

            </body></html>
            -------------------------->8---------------------

            Bleibt noch das Problem, was ich mache, wenn ich mehrere forms in einer Seite habe. Dann muss ich im EventHandler irgendwie herausfinden, wer gerade den Focus hatte....

            Ciao
            Paul

            1. Also jetzt eine Version, die mit Netscape Comm 4.03 laeuft (anderes habe ich nicht getestet):

              window.captureEvents(Event.KEYPRESS);
              window.onkeypress = Tastatur;

              Laeuft so nur mit Netscape 4.x
              Fuer MSIE4 ist das mit Sicherheit auch hinzukriegen, man muesste aber die events anders ermitteln und abfangen.
              Bei allen anderen Browsern no chance.

              Christine

  2. Hallo everyone,

    mein Problem ist, dass es mir nicht gelingt, ein Formular mit mehr als einer Texteingabezeile mit einfachem Enter abzuschicken.

    Zumindest mit dem Internet Explorer fuer Mac OS funktioniert das. Allerdings empfiehlt sich diese Vorgehensweise nicht, das sie zu fehlerhafter Parameteruebermittlung fuehren kann. So resultiert das Abschicken einer Suchanfrage an eine FileMaker Pro Datenbank (online mittels des FMPRo-eigenen Web Companion, zu sehen auf http://www.schlewig.de/) in einer Fehlermeldung.
    Wird die gleiche Suchanfrage mit Klick auf Submit abgeschickt, tritt der Fehler nicht auf.

    Da klick' ich lieber ;-)

    Gruss
    Stef