Cursor in Eingabefeld
Gerhard
- html
1 Sven Rautenberg1 Klawischnigg1 Der Martin
0 Kai3450 ChrisB0 Der Martin
0 ChrisB1 LX
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.
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
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...
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
[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
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
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
[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
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
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
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.
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
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
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
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