tux.: onKeypress in SELECT-Feldern?

Mahlzeit,

ich bastle gerade an einem Formular, das u.a. ein SELECT-Feld enthält. Nun würde ich dieses Formular gern auch ohne Maus benutzbar machen. Allerdings ist es erforderlich, dass während der Eingabe eine Validitätsprüfung durchgeführt wird.

Zwar kann ich mit den Pfeiltasten die verschiedenen OPTIONen durchwechseln, onKeypress scheint aber nichts zu tun.

Was tun?

  1. Zwar kann ich mit den Pfeiltasten die verschiedenen OPTIONen durchwechseln, onKeypress scheint aber nichts zu tun.

    In welchem Browser? Fehlermeldung?

    Was tun?

    Manche browser reagieren nicht oder nciht richtig auf die Events in option, verwende die in <select> oder noch besser von <form>. Dann brauchst du nur einen Eventhandler.

    Struppi.

    1. In welchem Browser? Fehlermeldung?

      In allen, keine. onChange funktioniert wunderbar, wenn man die Maus verwendet; aber das will ich ja nicht müssen.

      Manche browser reagieren nicht oder nciht richtig auf die Events in option, verwende die in <select> oder noch besser von <form>.

      <select onKeypress> verwende ich; erfolglos.

      1. Hallo,

        In allen, keine. onChange funktioniert wunderbar, wenn man die Maus verwendet; aber das will ich ja nicht müssen.

        onchange (kleines c) sollte immer funktionieren, wenn sich die Auswahl geändert hat, egal wie man das anstellt. Tut es das etwa nicht?

        Gruß, Don P

        1. onchange (kleines c) sollte immer funktionieren, wenn sich die Auswahl geändert hat, egal wie man das anstellt. Tut es das etwa nicht?

          Nein. Das ist lt. SelfHTML allerdings auch Absicht: Man muss erst aus dem Element herausklicken, bevor sich etwas tut.

          Quasi wie onblur - und das will ich ja gerade nicht.

          1. Hallo,

            Nein. Das ist lt. SelfHTML allerdings auch Absicht: Man muss erst aus dem Element herausklicken, bevor sich etwas tut.

            Quasi wie onblur - und das will ich ja gerade nicht.

            Dachte immer, onchange wird mit der Enter-Taste ausgelöst.
            Wenn es nicht so ist, kannst du doch nach onchange und der Validierung wieder focus() anwenden, um das Element erneut anzuwählen, mit Hinweis an den Benutzer, dass er gefälligst etwas andres wählen soll...

            Wie kann es überhaupt kommen, dass eine Auswahl validiert werden muss? Die Werte sind doch vorgegeben. Warum gibst du möglicherweise ungültige Werte vor? Fragen über Fragen...

            Gruß, Don P

            1. Hi,

              Wie kann es überhaupt kommen, dass eine Auswahl validiert werden muss? Die Werte sind doch vorgegeben. Warum gibst du möglicherweise ungültige Werte vor? Fragen über Fragen...

              Und welchen Sinn soll es haben, bei Tastatursteuerung sofort zu validieren? Man muß ja ggf. mehrfach rauf/runter drücken, bis man beim gewünschten Wert ist - eine Validierung mit den Werten, die man dabei eigentlich nur überspringen will, an denen man aber per Tastatur nicht vorbeikommt, ist m.E. sinnlos.

              cu,
              Andreas

              --
              Warum nennt sich Andreas hier MudGuard?
              O o ostern ...
              Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
            2. Hallo,

              Dachte immer, onchange wird mit der Enter-Taste ausgelöst.

              falsch gedacht. ;-)
              Wo hast du diese Idee her?

              Nein, onchange wird ausgelöst, wenn das Element den Focus verliert und sich sein Wert geändert hat, seit es den Focus erhalten hat.

              Wie kann es überhaupt kommen, dass eine Auswahl validiert werden muss? Die Werte sind doch vorgegeben. Warum gibst du möglicherweise ungültige Werte vor? Fragen über Fragen...

              Möglicherweise sind einzlne Auswahloptionen nur kontextabhängig gültig.
              Aber selbst dann halte ich eine Validierung "in Echtzeit" nicht für schlau. Lasst doch den Nutzer die Eingaben in der Reihenfolge machen, die ihm passt. Natürlich ergeben sich dann zwischendurch auch mal Kombinationen, die nicht sinnvoll sind. Der Zeitpunkt des Absendens (onsubmit) ist meiner Ansicht nach optimal für eine clientseitige Validierung (die sowieso nur optional sein darf, die verbindliche Prüfung der Eingaben mussen in jedem Fall serverseitig erfolgen).

              Ciao,
               Martin

              --
              Wissen erwirbt man, indem man immer das Kleingedruckte sorgfältig liest.
              Erfahrung bekommt man, indem man das nicht tut.
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              1. Hallo,

                Dachte immer, onchange wird mit der Enter-Taste ausgelöst.

                Wo hast du diese Idee her?

                Ergibt sich aus der Logik, und ich hab's soeben ausprobiert.

                Nein, onchange wird ausgelöst, wenn das Element den Focus verliert und sich sein Wert geändert hat, seit es den Focus erhalten hat.

                Zumindest im IE8 und im neuesten FF löst die Enter-Taste im Selectfeld aber den onchange-Handler aus, wenn die Auswahl geändert ist, und zwar *ohne* dass das Element den Kokus verliert :P
                Würde mich wundern, wenn es bei andren Browsern nicht so wäre, ist ja wie gesagt auch ganz logisch, weil Enter eben die Bestätigungstaste ist, die soviel bedeutet wie Amen.

                Gruß, Don P

                1. Hi,

                  Dachte immer, onchange wird mit der Enter-Taste ausgelöst.
                  Wo hast du diese Idee her?
                  Ergibt sich aus der Logik, und ich hab's soeben ausprobiert.

                  okay, in diesem speziellen Fall stimmt's, da kommt onchange tatsächlich schon früh.
                  Ich hatte deine Behauptung als allgemeingültig für alle Formularelemente verstanden.

                  *ohne* dass das Element den Kokus verliert :P

                  Den Hopuskokus? ;-)

                  Würde mich wundern, wenn es bei andren Browsern nicht so wäre, ist ja wie gesagt auch ganz logisch, weil Enter eben die Bestätigungstaste ist, die soviel bedeutet wie Amen.

                  Bei select-Elementen, ja - obwohl die Auswahl ja auch allein mit den Cursortasten (auf/ab) geändert werden kann, ohne die Liste aufzuklappen (mach ich gern so, weil ich dann nicht erst die Maus brauche, um die Liste auszuklappen). Dann brauch ich an der Stelle auch keine Enter-Taste.

                  Ciao,
                   Martin

                  --
                  ... und der FDP-Wähler gibt seine Stimme der FDP.
                     (Faszinierende Erkenntnis meines Gemeinschaftskunde-Lehrers, 9. Schuljahr)
                  Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                  1. Hallo,

                    OK, du warst schneller mit der Antwort...

                    Ich hatte deine Behauptung als allgemeingültig für alle Formularelemente verstanden.

                    Es geht hier doch nur um Select.

                    Den Hopuskokus? ;-)

                    Genau den ;)

                    Möglicherweise sind einzlne Auswahloptionen nur kontextabhängig gültig.

                    Sicher, aber wenn man schon clientseitig validiert, dann bietet man doch keinen Optionen an, die gar keine sind. Wenn gewisse Kombinationen von Eingaben ungültig sind, sollte man jeweils sofort reagieren und die abhängigen Auswahllisten entsprechend ändern.

                    Gruß, Don P

              2. Hallo,

                Nein, onchange wird ausgelöst, wenn das Element den Focus verliert und sich sein Wert geändert hat, seit es den Focus erhalten hat.

                Stimmt einfach nicht: Sowohl im IE 8 als auch in Opera 10.53 wird onchange sogar von den Pfeiltasten im einzeiligen Selectfeld ausgelöst wenn man nicht aufklappt, mehrzeilige Felder habe ich nicht probiert. In allen Fällen (IE, FF, Opera) tut's auch die Enter-Taste ohne Fokusverlust im einzeiligen, aufgeklappten Selectfeld.

                Gruß, Don P

      2. Hallo,

        In welchem Browser? Fehlermeldung?

        In allen, keine.

        BTW, eine JS-Fehlermeldung verhält sich anders als ein Krieg: Sie kommt nicht einfach her, sondern man muss schon hingehen (Fehlerkonsole), um sie zu bemerken.

        Gruß, Don P

        1. man muss schon hingehen (Fehlerkonsole), um sie zu bemerken.

          Steht nix drin in der Fehlerkonsole. Ganz unerfahren bin ich ja nun nicht.

          1. man muss schon hingehen (Fehlerkonsole), um sie zu bemerken.

            Steht nix drin in der Fehlerkonsole. Ganz unerfahren bin ich ja nun nicht.

            Dann wäre es schön, wenn du uns helfen würdest deine Frage zu beantworten. Das ist z.b. eine Information die selbstverständlich wäre.

            Aber wichtiger wäre es, wenn du uns in die Lage versetzen würdest, dein konkretes Problem nachzuvollziehen. Weil nur mit deinen Schilderungen ist uns nicht geholfen.

            Struppi.

      3. Manche browser reagieren nicht oder nciht richtig auf die Events in option, verwende die in <select> oder noch besser von <form>.

        <select onKeypress> verwende ich; erfolglos.

        Dann machst du etwas falsch. Nur wir können nicht Wissen was.

        Struppi.