Siegfried: In einem Formular mit ENTER von Feld zu Feld ?????

Hallo,
meine HTML-Seite soll ein Formular enthalten, das nicht verschickt wird, sondern ein aus den Benutzerangaben ermitteltes Ergebnis sofort anzeigt, im Prinzip so, wie in dem stark vereinfachten Muster weiter unten.

Da die Seite viele Formularfelder enthält und viele Benutzer gewohnt sind, mit der ENTER-Taste zum nächsten Eingabefeld zu gehen, sollte sich das Formular auch so verhalten. Ich habe jedoch noch keinen Weg gefunden, wie das zu bewerkstelligen wäre. In Java kann man das Ereignis KEY_PRESS abfangen und den Tastencode modifizieren. In Javascript scheint das nicht zu gehen.

Kennt jemand eine Möglichkeit das Problem zu lösen?

Vielen Dank im Voraus

Siegfried

<head>
<script type="text/javascript">
<!--
 function input_changed(obj) {
  document.F1.Brutto.value = document.F1.Stunden.value * document.F1.Stdlohn.value;
 }
//-->
</script>
</head>
<body>
<form name="F1" >
<input type="hidden" name="subject" value="Formular">
Stunden:
<input type="text" name="Stunden" size="5" value="38.5" onChange="input_changed(this);" >
Stundenlohn:
<input type="text" name="Stdlohn" size="5" value="15.85" onChange="input_changed(this);" >
<p>
Bruttolohn
<input type="text" name="Brutto" size="9" value=" 0.00" readonly style="text-align: right">
</p></body>

  1. Hi

    Da die Seite viele Formularfelder enthält und viele Benutzer gewohnt sind, mit der ENTER-Taste zum nächsten Eingabefeld zu gehen, sollte sich das Formular auch so verhalten.

    Bitte? Wenn ich mit der ENTER-Taste zum nächsten Input springen müsste so würde ich aber mit wehenden Fahnen flüchten! ENTER ist bei _mir_ (und bei den meisten anderen Leuten schätze ich) zum _Absenden_ des Formulars, aber nicht zum "Tabben". Wenn ich dich falsch verstanden haben sollte, so erläutere dich bitte ;o)

    Für so etwas ist und bleibt TAB gedacht und so sollte man es auch halten. Man kann auch dort mit onChange und focus(); was machen...

    Fabian

    1. Bitte? Wenn ich mit der ENTER-Taste zum nächsten Input springen müsste so würde ich aber mit wehenden Fahnen flüchten! ENTER ist bei _mir_ (und bei den meisten anderen Leuten schätze ich) zum _Absenden_ des Formulars, aber nicht zum "Tabben".

      Grundsätzlich stimme ich dir zu. In diesem Fall gibt es für die Enter-Taste aber keine Funktion (das Formular wir nicht abgesandt), statt dessen wird nach Eingabe in ein Feld sofort das Ergebnis neu ermittelt. Aber eben nur, wenn die Eingabe mit TAB abgeschlossen wird. Wenn die Eingabe statt mit TAB mit ENTER abgeschlossen wird, ertönt nur ein kurzer Fehlerton. Ich kenne viele DAU's, die dadurch irritiert werden. Dies möchte ich gerne vermeiden. TAB soll natürlich auch weiterhin funktionieren.

      Gruß
      Siegfried

      1. Moin!

        Bitte? Wenn ich mit der ENTER-Taste zum nächsten Input springen müsste so würde ich aber mit wehenden Fahnen flüchten! ENTER ist bei _mir_ (und bei den meisten anderen Leuten schätze ich) zum _Absenden_ des Formulars, aber nicht zum "Tabben".

        Grundsätzlich stimme ich dir zu. In diesem Fall gibt es für die Enter-Taste aber keine Funktion (das Formular wir nicht abgesandt), statt dessen wird nach Eingabe in ein Feld sofort das Ergebnis neu ermittelt.

        Ich möchte deiner Aussage, dass viele Benutzer mit Enter das Feld wechseln, doch widersprechen. Das geht eigentlich nur in einigen Ausnahmefällen, und jedenfalls nicht, wenn man verschiedene Eingabefelder zum Ausfüllen hat.

        Entweder der Benutzer ist über die Benutzbarkeit der Tastatur informiert und wird Tab kennen und benutzen, oder er ist nicht informiert - dann wird er mit der Maus klicken, um zu einem neuen Eingabefeld zu kommen.

        Aber eben nur, wenn die Eingabe mit TAB abgeschlossen wird. Wenn die Eingabe statt mit TAB mit ENTER abgeschlossen wird, ertönt nur ein kurzer Fehlerton.

        Warum kommt der Fehlerton? Doch nicht etwa, weil das Formularabschicken nicht funktioniert? Dann solltest du mit onsubmit im <form> das Abschicken abfangen und mit "return deineonsubmitfunktion()" das tun, was bei Return geschehen soll. deineonsubmitfunktion() muß "false" zurückgeben (return false), damit das Formular nicht wirklich abgeschickt wird.

        Ansonsten: Mit onchange wird eine Funktion aufgerufen, wenn in einem Feld etwas geändert wurde - und da viele Benutzer lieber klicken: Gib ihnen was zum Klicken! Ein schöner Button muß sein. Den entweder als Link (gerne grafisch gestaltet) oder als <input type="button">, dann kann man ihn auch per Tastatur anspringen und per Return klicken.

        Ich kenne viele DAU's, die dadurch irritiert werden. Dies möchte ich gerne vermeiden. TAB soll natürlich auch weiterhin funktionieren.

        DAUs sind immer verwirrt. Es sollte dir nicht darum gehen, eine Seite DAU-fähig zu machen (dann kannst du nämlich eigentlich gleich aufgeben), oder du hast es nicht mit echten DAUs zu tun - dann sind die einer vernünftigen Lösung durchaus zugänglich. Ich bin jedenfalls davon überzeugt, dass mit Automatismen (onchange, onsubmit) oder attraktiven Buttons das Ergebnis viel schöner erreicht werden kann, als wenn du Return unerwartet umbastelst. Womit ein Benutzer nicht rechnet, das benutzt er nicht.

        - Sven Rautenberg

        --
        "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)
        1. Danke! Du hast mir weitergeholfen.
          Gruß
          Siegfried