Gerhard: Cursor in Eingabefeld

Hallo,
ich habe ein Kontaktformular "gebastelt". Auf Anraten in den Foren erfolgen die Prüfungen mit Perl und nicht mit Javascript.
Wenn ich jetzt bei Aufruf des Formulars den Cursor auf ein bestimmtes Feld setzen will, so geht das wie ich gelesen habe sehr einfach mit Javascript.
Aber nur dafür möchte ich nicht unbedingt Javascript verwenden.
Nachdem das Formular doch aus reinem HTML besteht, gibt es da nicht auch die Möglichkeit, die Cursor-Positionierung anzugeben. Oder gibt es außer JS andere Möglichkeiten?
Danke
Gerhard.

  1. Moin!

    Aber nur dafür möchte ich nicht unbedingt Javascript verwenden.

    Dann musst du auf das Cursorsetzen verzichten. Es geht nur mit Javascript.

    - Sven Rautenberg

  2. Hi there,

    die Möglichkeit, die Cursor-Positionierung anzugeben. Oder gibt es außer JS andere Möglichkeiten?

    Nein. Zumindest nicht für Browser. Der Internet Explorer versteht noch VBScript, aber damit hättest Du erst recht nichts gewonnen...

  3. Hallo,

    ich habe ein Kontaktformular "gebastelt". Auf Anraten in den Foren erfolgen die Prüfungen mit Perl und nicht mit Javascript.

    richtig so, obwohl gegen eine Vorab-Prüfung mit Javascript nichts einzuwenden ist - sie erspart dem Besucher (und dem Server) eventuell ein unnötiges Absenden des fehlerhaft ausgefüllten Formulars.
    Nur darf man sich auf die alleinige Prüfung durch Javascript nicht verlassen, insofern liegst du mit deinem Konzept schon mal richtig.

    Wenn ich jetzt bei Aufruf des Formulars den Cursor auf ein bestimmtes Feld setzen will, so geht das wie ich gelesen habe sehr einfach mit Javascript.

    Ja, richtig.

    Aber nur dafür möchte ich nicht unbedingt Javascript verwenden.

    Warum nicht? Das ist ein idealer Anwendungsfall für JS: Eine optionale Funktion, die erhöhten Bedienungskomfort bietet, aber nicht zwingend notwendig ist. Das Formular bleibt also bei deaktiviertem JS immer noch benutzbar.

    Nachdem das Formular doch aus reinem HTML besteht, gibt es da nicht auch die Möglichkeit, die Cursor-Positionierung anzugeben.

    Nein.

    So long,
     Martin

    --
    Was du heute kannst besorgen,
    das geht sicher auch noch morgen.
    1. [latex]Mae  govannen![/latex]

      Aber nur dafür möchte ich nicht unbedingt Javascript verwenden.

      Warum nicht? Das ist ein idealer Anwendungsfall für JS: Eine optionale Funktion, die erhöhten Bedienungskomfort bietet, aber nicht zwingend notwendig ist. Das Formular bleibt also bei deaktiviertem JS immer noch benutzbar.

      Meintest du _stark verringerten_ Bedienkomfort? Ich jedenfalls *liebe* es, wenn ich anfange, ein Formular auszufüllen und beim 3. Feld der Cursor auf einmal wieder im 1. Feld ist, weil $irgendeine_Ressource länger gebraucht hat und das onload-Event viel zu spät gefeuert hat. Besonders nett, wenn man gerade ein Passwort eintippt und man nicht alleine ist. Ist doch schön, wenn das Passwort in einem anderen Feld im Klartext zu lesen ist...
      Ich persönlich hasse Focus-setzen

      Cü,

      Kai

      --
      „It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark, and we're wearing sunglasses“.
      „Hit it!“
      Selfzeugs
      SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
      1. Hi,

        Meintest du _stark verringerten_ Bedienkomfort? Ich jedenfalls *liebe* es, wenn ich anfange, ein Formular auszufüllen und beim 3. Feld der Cursor auf einmal wieder im 1. Feld ist, weil $irgendeine_Ressource länger gebraucht hat und das onload-Event viel zu spät gefeuert hat.

        Stimmt. Insb. bei Google Maps nervt mich das auch immer wieder, wenn ich bereits eine Adresse zu tippen begonnen habe, und der Cursor dann wieder an den Feldanfang hüpft.

        Ich persönlich hasse Focus-setzen

        Zumindest sollte man m.E. auch nicht onload dazu verwenden.
        Sowas wie onDOMReady o.ä., was manche Libraries bereitstellen, wäre vielleicht schon etwas besser geeignet; am optimalsten vielleicht ein winziges Script-Element innerhalb von body direkt nach dem Formularfeld, welches unmittelbar nach dem Beginn von dessen Existenz den Fokus setzt.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
      2. Hallo Kai,

        »» Das ist ein idealer Anwendungsfall für JS: Eine optionale Funktion, die erhöhten Bedienungskomfort bietet, ...
        Meintest du _stark verringerten_ Bedienkomfort?

        nein, nicht wenn man es richtig[tm] macht.

        Ich jedenfalls *liebe* es, wenn ich anfange, ein Formular auszufüllen und beim 3. Feld der Cursor auf einmal wieder im 1. Feld ist, weil $irgendeine_Ressource länger gebraucht hat und das onload-Event viel zu spät gefeuert hat.

        Das lieb' ich auch wie Apfelmus,
        von dem ich leider kotzen muss. :-)

        Ehrlich, das von dir beschriebene Problem kenne ich auch, und ich habe mich schon oft darüber geärgert. Deswegen darf[tm] man so einen Eingriff auch nicht erst machen, wenn onload endlich feuert, sondern sofort. Am besten also diese JS-Anweisung unmittelbar nach dem Formular notieren, auf jeden Fall aber noch im body der Seite und nicht als Eventhandler.
        Das ist zwar im Hinblick auf die Trennung von Inhalt und Funktion nicht so schön, aber IMO durchaus vertretbar.

        Ich persönlich hasse Focus-setzen

        Ich hasse es dann, wenn der Focus zur Unzeit gesetzt wird, oder auf ein Feld, von dem ich es intuitiv nicht erwarten würde.
        Negativbeispiel MS Word: Rufe ich den "Drucken"-Dialog auf, ist nicht etwa das Feld für die Angabe des Seitenbereichs focussiert, wie ich es erwarten würde - sondern das Feld für die Anzahl der Kopien. Schon oft ist es mir passiert, dass ich einen Druckauftrag abbrechen musste, weil ich eigentlich nicht acht Exemplare des ganzen Dokuments drucken wollte, sondern nur einmal die Seite 8. Grrmpf!

        Ciao,
         Martin

        --
        Der Alptraum jedes Computers:
        "Mir war, als hätte ich gerade eine 2 gesehen."
        1. [latex]Mae  govannen![/latex]

          Ehrlich, das von dir beschriebene Problem kenne ich auch, und ich habe mich schon oft darüber geärgert. Deswegen darf[tm] man so einen Eingriff auch nicht erst machen, wenn onload endlich feuert, sondern sofort. Am besten also diese JS-Anweisung unmittelbar nach dem Formular notieren, auf jeden Fall aber noch im body der Seite und nicht als Eventhandler.
          Das ist zwar im Hinblick auf die Trennung von Inhalt und Funktion nicht so schön, aber IMO durchaus vertretbar.

          Oder das externe Script ans Dokument-Ende setzen (sollte man ohnehin), dann reicht üblicherweise auch schon, dort die entsprechende Anweisung "direkt" ausführen zu lassen.

          Worauf ich hinauswollte,ist, daß von ~20 Formularen, die den Focus setzen, vielleicht eines diese Problematik korrekt behandelt, ansonsten sehe ich immer focus bei onload. Insofern scheint das Wissen, wie man es richtig macht, sehr wenig verbreitet.

          Cü,

          Kai

          --
          „It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark, and we're wearing sunglasses“.
          „Hit it!“
          Selfzeugs
          SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
          1. Hallo!
            Als einfacher Anwender und dazu noch nicht lange sehe ich das Problem hier eher bei den Entwicklern.
            Offensichtlich gehen die meisten Anwender davon aus, dass die Anweisungen ausgeführt werden, wenn das Formular geladen ist   u n d    dass das Formular auch erst (für die Eingabe) zur Verfügung steht, wenn alle Funktionen ausgeführt sind.
            Gruß
            Gerhard

            1. Hallo Gerhard,

              Als einfacher Anwender und dazu noch nicht lange sehe ich das Problem hier eher bei den Entwicklern.

              natürlich - und zwar bei den Entwicklern solcher Formulare, die das beschriebene Verhalten zeigen.

              Offensichtlich gehen die meisten Anwender davon aus, dass die Anweisungen ausgeführt werden, wenn das Formular geladen ist   u n d    dass das Formular auch erst (für die Eingabe) zur Verfügung steht, wenn alle Funktionen ausgeführt sind.

              Ja, sicher. Als Anwender (also jemand, der am Browser sitzt und ein Formular aufruft) weiß ich aber nicht, dass irgendwo in der Ecke noch zwei Grafiken fehlen, die der Server mit Verzögerung ausliefert. Ich sehe eine offensichtlich fertig geladene Seite. Also fange ich an, etwas in die Eingabefelder einzutragen.
              Nach ein paar Sekunden sind schließlich die beiden fehlenden Bilder als Nachzügler auch noch geladen, onload reagiert und setzt mir den Cursor wieder ins erste Feld.
              Wem willst du hier einen Vorwurf machen?

              So long,
               Martin

              --
              Ein Snob ist ein Mensch, der sich auf ein Stachelschwein setzt, ohne eine Miene zu verziehen - nur weil ihm jemand gesagt hat, das sei ein Designersessel.
              1. Hallo,

                »» Als einfacher Anwender und dazu noch nicht lange sehe ich das Problem hier eher bei den Entwicklern.

                Da meinte ich die Systementwickler (HTML,Javascript etc.)

                Ja, sicher. Als Anwender (also jemand, der am Browser sitzt und ein Formular aufruft) weiß ich aber nicht, dass irgendwo in der Ecke noch zwei Grafiken fehlen, die der Server mit Verzögerung ausliefert. Ich sehe eine offensichtlich fertig geladene Seite. Also fange ich an, etwas in die Eingabefelder einzutragen.

                Genau das meine ich ja, könnte man mit einem vernünftigen System verhindern
                (siehe alle Anwendungen an den Großrechnern)

                Nach ein paar Sekunden sind schließlich die beiden fehlenden Bilder als Nachzügler auch noch geladen, onload reagiert und setzt mir den Cursor wieder ins erste Feld.

                Kann nicht sein, wenn man dies verhindert.

                Wem willst du hier einen Vorwurf machen?

                s.o.

                1. Hallo

                  Da meinte ich die Systementwickler (HTML,Javascript etc.)

                  »» Ich sehe eine offensichtlich fertig geladene Seite. Also fange ich an, etwas in die Eingabefelder einzutragen.
                  Genau das meine ich ja, könnte man mit einem vernünftigen System verhindern
                  (siehe alle Anwendungen an den Großrechnern)

                  »» Nach ein paar Sekunden sind schließlich die beiden fehlenden Bilder als Nachzügler auch noch geladen, onload reagiert und setzt mir den Cursor wieder ins erste Feld.
                  Kann nicht sein, wenn man dies verhindert.

                  Da verwechselst du aber was (unter anderem Äpfel und Birnen). Bei Anwendungen im lokalen Netz sollte man von während der Programmabläufe bestehen bleibenden Netzwerkverbindungen einerseits und höheren Geschwindigkeiten andererseits ausgehen können. Wenn du aber ein HTML-Dokument (auch im lokalen Netz) anforderst, erfragst du dies über HTTP(S) beim Webserver, der liefert es (vollständig) aus und der Browser/Client stellt es dar, sobald die Daten ankommen.

                  Einerseits kann er (der Browser) das nur in dem Maße, wie die Daten bei ihm eintreffen (das HTML kann schon ausgegeben werden, bevor das JavaScript zuschlägt) und andererseits ist die Verbindung zum Webserver damit obsolet (der weiß nur, dass von da oder dort etwas angefordert *wurde* (Zeitform beachten) und dass er das ausgeliefert hat, ob der Client noch "online" ist, weiß er nicht, womit jegliche weitere Einflussnahme auf diesem Weg ausfällt). Das System ist nunmal so und ein *Autor* eines Dokuments, dass die Manipulationsmöglichkeiten von JavaScript nutzen will, muss darauf Rücksicht nehmen. Er ist der Anbieter, der dafür Sorge zu tragen hat, dass das Dokument, wie erwartet, funktioniert.

                  Das ist der Fakt, über den sich Kai und Martin unterhielten, unter anderem über das "Wie" des Verhinderns solcher Fehlverhalten.

                  Tschö, Auge

                  --
                  Die deutschen Interessen werden am Liechtenstein verteidigt.
                  Veranstaltungsdatenbank Vdb 0.3
        2. Hi,

          »» Ich jedenfalls *liebe* es, wenn ich anfange, ein Formular auszufüllen und beim 3. Feld der Cursor auf einmal wieder im 1. Feld ist, weil $irgendeine_Ressource länger gebraucht hat und das onload-Event viel zu spät gefeuert hat.

          Das lieb' ich auch wie Apfelmus,
          von dem ich leider kotzen muss. :-)

          Schön ist auch folgendes:

          nach dem fokus-Formular ist man noch ein paar Seiten weitergegangen. Dann möchte man per backspace-Taste wieder auf eine Seite irgendwo vor dem fokus-Formular.
          Geht aber nicht - auf der Seite mit dem fokus-Formular bleibt man hängen, weil durch den Fokus im Eingabefeld backspace nicht mehr als "Seite zurück", sondern plötzlich als "Zeichen weglöschen" interpretiert wird.

          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.
  4. Hi,

    ich habe ein Kontaktformular "gebastelt". Auf Anraten in den Foren erfolgen die Prüfungen mit Perl und nicht mit Javascript.

    Und den Hintergrund dieses Anratens verstehst du auch?

    Wenn ich jetzt bei Aufruf des Formulars den Cursor auf ein bestimmtes Feld setzen will, so geht das wie ich gelesen habe sehr einfach mit Javascript.
    Aber nur dafür möchte ich nicht unbedingt Javascript verwenden.

    Warum nicht?
    Das ist ein reiner Zusatzkomfort, der im unwahrscheinlichen Fall, dass JS nicht verfügbar ist, halt ebenso durch Abwesenheit glänzt.

    Nachdem das Formular doch aus reinem HTML besteht, gibt es da nicht auch die Möglichkeit, die Cursor-Positionierung anzugeben.

    Nein.

    Oder gibt es außer JS andere Möglichkeiten?

    Keine brauchbareren.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
  5. Du kannst mit dem tabindex-Attribut die Reihenfolge der Felder angeben. Ein Feld von Anfang an auszuwählen ist ohne JavaScript jedoch nicht möglich.

    Gruß, LX

    --
    RFC 1925, Satz 6: Es ist einfacher, ein Problem zu verschieben (...), als es zu lösen.