Mickele40: Weiterspringen in Formularfeldern mit Enter und AutoComplete

Hallo.

Habe folgendes Problem:
2 Eingabefelder + Button zum Abschicken.
Nun möchte ich im Hinblick auf Barrierefreiheit das ganze auch per Enter ausfüllen können.
Funktioniert mit .Focus() soweit ganz gut.
Nur wenn bei aktivierter Autovervollständigung und mehrmaliger Eingabe dann der schon mal eingebebene Wer vorgeschlagen wird, (z.B. 1234567 war das letztemal eingeben, jetzt wird 12 getippt)
und ich dann die Enter-Taste drücke, wird nicht der evtl. auch mit den Cursortasten ausgewählte Wert übernommen, sondern ins nächste Feld gesprungen.
Hilfreich wäre wenn ich statt .Focus() einen Tab auslösen könnte.
Denn mit können vorgeschlagene Werte auch übernommen werden.
Das senden funktioniert unter IE 6+ über event.keyCode = 9 ganz gut, jedoch nicht beim Mozilla. Der kennt ja bekanntlich nur event.which
Und "taste = event.which; taste = 9;" geht nedde.

Weis jemand wie ich beim Mozilla nen Tastecode senden kann?
Oder wie ich abfragen kann ob gerade in der Autoverfollständigung auswählt wird? Dann könnte ich ja zuerst ein .click() auslösen.

Gruß Micha

  1. Hi,

    Habe folgendes Problem:
    2 Eingabefelder + Button zum Abschicken.
    Nun möchte ich im Hinblick auf Barrierefreiheit das ganze auch per Enter ausfüllen können.
    Funktioniert mit .Focus() soweit ganz gut.
    Nur wenn bei aktivierter Autovervollständigung und mehrmaliger Eingabe dann der schon mal eingebebene Wer vorgeschlagen wird, (z.B. 1234567 war das letztemal eingeben, jetzt wird 12 getippt)
    und ich dann die Enter-Taste drücke, wird nicht der evtl. auch mit den Cursortasten ausgewählte Wert übernommen, sondern ins nächste Feld gesprungen.

    Du hältst das für barrierefreier, wenn sich Dein Formular anders verhält als alle anderen Formulare im WWW?

    Der User ist es gewohnt, daß mit Enter das Formular abgeschickt wird und mit Tab das nächste Feld erreicht wird.
    Wenn sich das bei Deinem Formular plötzlich anders verhält, stellt das eine erhebliche Barriere dar.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hello,

      Du hältst das für barrierefreier, wenn sich Dein Formular anders verhält als alle anderen Formulare im WWW?

      Der User ist es gewohnt, daß mit Enter das Formular abgeschickt wird und mit Tab das nächste Feld erreicht wird.

      Der Fehler ist also schon viel früher gemacht worden, als man von der in DE üblichen Feldbestätigung mit Enter abgewichen ist. Formular abschicken (also etwas quasi endgültiges für den Benutzer) war immer mit CTRL-RETURN oder einer Funktionstaste. Seit der ungezügelte Amerikanismus allerdings auch in unsere EDV eingzogen ist (nun heißt sie ja uch IT), wurden die ganzen sinnvollen Dinge kaputt gemacht.

      Alle Cursor-Bewegungen können mit der rechten Hand durch Anschlagen _einer_ Taste erledigt werden, warum muss man nun plötzlich für die Feldsprünge die linke Hand nehmen und zum Rückwärtsspringen sogar _zwei_ Tasten drücken.

      Wir haben uns da einfach von der Übermacht des Billy the Gator (oder wie hieß der) und seiner Freunde überfahren und verarschen lassen.

      Ich stimme Dir aber zu, dass es genausowenig sinnvoll ist, diese sinnlose, aber weltweit verbreitete unergonomische Vorgehensweise im Einzelkampf wieder zu beseitigen zu versuchen.

      Ein harzliches Glückauf

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hallo Tom,

        Der User ist es gewohnt, daß mit Enter das Formular abgeschickt wird und mit Tab das nächste Feld erreicht wird.
        Der Fehler ist also schon viel früher gemacht worden, als man von der in DE üblichen Feldbestätigung mit Enter abgewichen ist. Formular abschicken (also etwas quasi endgültiges für den Benutzer) war immer mit CTRL-RETURN oder einer Funktionstaste.

        an was für Systeme denkst du dabei? Mir sind -außer vom Hörensagen- keine solchen bekannt. Vielleicht irgendwelche antiken BTX-Terminals, deren Usability wir bestimmt nicht als Vorbild haben wollen.

        Seit der ungezügelte Amerikanismus allerdings auch in unsere EDV eingzogen ist (nun heißt sie ja uch IT), wurden die ganzen sinnvollen Dinge kaputt gemacht.

        Die heute typische Bedienung von Formularen oder Eingabe- und Dialogfenstern hat aber nicht erst mit Windows Einzug gehalten. Sie war bereits Ende der 80er Jahre bei DOS-basierten Anwendungen mit pseudo-graphischer Oberfläche im Textmodus weit verbreitet.
        Und noch weiter muss man, glaube ich, nicht zurückgehen, denn Anfang/Mitte der 90er Jahre sind Computer und der Umgang damit erst für die breite Masse ins Bewusstsein gerückt.
        Wer also möglicherweise aus den Siebzigern noch Mainframes über Terminals mit ESC-Steuersequenzen bedient hat, zählt IMHO eher zu den professionellen Anwendern, von denen man auch die Flexibilität erwarten darf, sich mit unterschiedlichen Konzepten zurechtzufinden.

        Alle Cursor-Bewegungen können mit der rechten Hand durch Anschlagen _einer_ Taste erledigt werden

        Das lässt aber die Cursorbewegung *innerhalb eines Feldes* mit der Bewegung *von Feld zu Feld* verschmelzen. DAS fände ich erst recht irritierend.

        warum muss man nun plötzlich für die Feldsprünge die linke Hand nehmen und zum Rückwärtsspringen sogar _zwei_ Tasten drücken.

        Nun, das ist sicher Gewohnheitssache. Aber ich denke, wer mit der Tastatur arbeitet, hat in der Regel eh beide Hande auf dem Hackbrett. Warum soll also die Linke nicht auch bei der Navigation mitspielen?

        Wir haben uns da einfach von der Übermacht des Billy the Gator (oder wie hieß der) und seiner Freunde überfahren und verarschen lassen.

        Ich behaupte, dass der in diesem konkreten Fall gar nichts dafür kann - er ist nur auf einer Welle mitgeschwommen, die sowieso schon rollte.

        Ich stimme Dir aber zu, dass es genausowenig sinnvoll ist, diese sinnlose, aber weltweit verbreitete unergonomische Vorgehensweise im Einzelkampf wieder zu beseitigen zu versuchen.

        Das steht wohl außer Zweifel.

        Schönes Wochenende,
         Martin

        --
        Gültig sind Frauen ab 16, wohlgeformt ab 160 Pfund.
          (Gunnar Bittersmann)
        1. Hallo,

          Die heute typische Bedienung von Formularen oder Eingabe- und Dialogfenstern hat aber nicht erst mit Windows Einzug gehalten. Sie war bereits Ende der 80er Jahre bei DOS-basierten Anwendungen mit pseudo-graphischer Oberfläche im Textmodus weit verbreitet.

          ... und geht auf einen ersten Versuch der Standardisierung von Software zurück: SAA, und vor allem CUA.

          Im CUA sind z.B. auch die mir so vertrauten Tastenkombinationen Ctrl-Ins, Shift-Ins und Shift-Del verankert, die Windows auch heute noch unterstützt (auch wenn vorrangig die seltsamen Kombinationen Ctrl-X,C,V dokumentiert werden).
          Die Regel, dass Esc gleichbedeutend mit einem Klick auf "Abbrechen" und Enter gleichbedeutend mit dem Klick auf "OK" sein soll, wird leider heute auch von einigen Windows-Anwendungen nicht mehr konsequent befolgt - Esc zeigt häufig keine Reaktion.

          So long,
           Martin

          --
          Küssen ist die schönste Methode, eine Frau zum Schweigen zu bringen.
  2. Hallo,

    Nun möchte ich im Hinblick auf Barrierefreiheit das ganze auch per Enter ausfüllen können.
    Funktioniert mit .Focus() soweit ganz gut.

    Schon hier komme ich nicht mehr mir.
    Du willst, dass beim Drücken von Enter das nächste Feld fokussiert wird?
    Ich weiß nicht so recht, ob das »im Hinblick auf Barrierefreiheit« wirklich eine Verbesserung für den Anwender darstellt, wenn du die Bedeutung von Tasten plötzlich umkehrst.

    Nur wenn bei aktivierter Autovervollständigung und mehrmaliger Eingabe dann der schon mal eingebebene Wer vorgeschlagen wird, (z.B. 1234567 war das letztemal eingeben, jetzt wird 12 getippt)
    und ich dann die Enter-Taste drücke, wird nicht der evtl. auch mit den Cursortasten ausgewählte Wert übernommen, sondern ins nächste Feld gesprungen.

    Redest du von der Auto-Vervollständigung des Browsers oder von einer, die du selbst programmiert hast?
    Wenn der Anwender mit der Tastatur den Vorschlag im Dropdown auswählt und ihn mit Enter übernehmen will, wird dein Event-Handler ausgelöst und er springt. Das willst du vermeiden, habe ich das richtig verstanden?

    Hilfreich wäre wenn ich statt .Focus() einen Tab auslösen könnte.

    Hmm, wieso? Wenn der Anwender Tab drückt, springt der Fokus auch ohne JavaScript ins nächste Feld...

    Das senden funktioniert unter IE 6+ über event.keyCode = 9 ganz gut, jedoch nicht beim Mozilla. Der kennt ja bekanntlich nur event.which

    Nein, in dem Fall auch keyCode.

    Und "taste = event.which; taste = 9;" geht nedde.

    taste = 9 ist eine Wertzuweisung, meinst du taste == 9?
    Das sollte auch im Firefox funktionieren, zumindest bei keydown-Events.

    Weis jemand wie ich beim Mozilla nen Tastecode senden kann?

    Wieso »senden«? Willst du Events erzeugen oder durch Benutzereingaben erzeugte verarbeiten?

    Oder wie ich abfragen kann ob gerade in der Autoverfollständigung auswählt wird?

    Das kannst du vermutlich nicht. Zumindest weißt du zu dem Zeitpunkt, wenn der Tastaturevent mit Enter feuert, nicht, dass damit im AutoComplete-Dropdown etwas ausgewählt wurde.

    Sorry, aber ich verstehe dein Problem / deine Aufgabenstellung nicht ganz, bitte erläutere es doch noch einmal.

    Mathias