Wie setzen Sie den Fokus automatisch auf ein Textfeld, wenn eine Webseite geladen wird?
Gibt es dafür ein HTML-Tag oder muss es über Javascript erfolgen?
javascript
html
Mark Biek
quelle
quelle
Antworten:
Wenn Sie jquery verwenden:
oder Prototyp:
oder einfaches Javascript:
Beachten Sie jedoch, dass dies andere On-Load-Handler ersetzt. Suchen Sie daher in Google nach addLoadEvent (), um Onload-Handler sicher anzuhängen, anstatt sie zu ersetzen.
quelle
In HTML gibt es ein
autofocus
Attribut für alle Formularfelder. In Dive Into HTML 5 gibt es ein gutes Tutorial dazu . Leider wird es derzeit von IE-Versionen unter 10 nicht unterstützt .So verwenden Sie das HTML 5-Attribut und greifen auf eine JS-Option zurück:
Es sind keine jQuery-, Onload- oder Event-Handler erforderlich, da sich das JS unter dem HTML-Element befindet.
Bearbeiten: Ein weiterer Vorteil ist, dass JavaScript in einigen Browsern deaktiviert ist und Sie das JavaScript entfernen können, wenn Sie ältere Browser nicht unterstützen möchten.
Bearbeiten 2: Firefox 4 unterstützt jetzt das
autofocus
Attribut und lässt den IE ohne Unterstützung.quelle
autofocus="aufofocus"
? Alle von Ihnen angegebenen Links sagen nur, dass Sie das Attribut hinzufügen sollen :autofocus
.attribute="value"
boolesche Attribute zu verwenden. HTML5 kam mit der "leeren Attributsyntax" und wir haben die Redundanz entfernt. Jetzt können wir tun<input checked disabled autofocus data-something>
Sie müssen Javascript verwenden:
@Ben merkt an, dass Sie solche Ereignishandler nicht hinzufügen sollten. Während dies eine andere Frage ist, empfiehlt er, dass Sie diese Funktion verwenden:
Rufen Sie dann addLoadEvent auf Ihrer Seite auf und verweisen Sie auf eine Funktion, die den Fokus auf das gewünschte Textfeld legt.
quelle
Schreiben Sie einfach den Autofokus in das Textfeld. Das ist einfach und funktioniert so:
Hoffe das hilft.
quelle
Sie können dies einfach tun, indem Sie jquery folgendermaßen verwenden:
durch Aufrufen dieser Funktion in
$(document).ready()
.Dies bedeutet, dass diese Funktion ausgeführt wird, wenn das DOM bereit ist.
Weitere Informationen zur READY-Funktion finden Sie unter: http://api.jquery.com/ready/
quelle
Mit einfachem Vanille-HTML und Javascript
Für diejenigen, die das .net-Framework und asp.net 2.0 oder höher verwenden, ist es trivial. Wenn Sie ältere Versionen des Frameworks verwenden, müssen Sie ein ähnliches Javascript wie oben schreiben.
In Ihrem OnLoad-Handler (im Allgemeinen page_load, wenn Sie die mit Visual Studio gelieferte Stock-Seitenvorlage verwenden) können Sie Folgendes verwenden:
C #
VB.NET
(* Hinweis: Ich habe das Unterstrichzeichen aus dem Funktionsnamen entfernt, der im Allgemeinen Page Load ist, da es in einem Codeblock nicht ordnungsgemäß gerendert werden konnte. In der Markup-Dokumentation konnte ich nicht sehen, wie Unterstriche zum unübersichtlichen Rendern gebracht werden.)
Hoffe das hilft.
quelle
IMHO, die 'sauberste' Möglichkeit, das erste sichtbare, aktivierte Textfeld auf der Seite auszuwählen, besteht darin, jQuery zu verwenden und Folgendes zu tun:
Hoffentlich hilft das...
Vielen Dank...
quelle
quelle
Als allgemeinen Rat würde ich empfehlen, den Fokus nicht aus der Adressleiste zu stehlen. ( Jeff hat bereits darüber gesprochen. )
Das Laden der Webseite kann einige Zeit dauern. Dies bedeutet, dass Ihre Fokusänderung einige Zeit nach der Eingabe der pae-URL durch den Benutzer erfolgen kann. Dann hätte er seine Meinung ändern und wieder URLs eingeben können, während Sie Ihre Seite laden und den Fokus stehlen, um sie in Ihr Textfeld einzufügen.
Dies ist der einzige Grund, warum ich Google als Startseite entfernt habe.
Wenn Sie das Netzwerk (lokales Netzwerk) steuern oder wenn der Fokuswechsel darin besteht, ein wichtiges Usability-Problem zu lösen, vergessen Sie natürlich alles, was ich gerade gesagt habe :)
quelle
Ich hatte ein etwas anderes Problem. Ich wollte
autofocus
, wollte aber, dass derplaceholder
Text browserübergreifend bleibt. Einige Browser würden denplaceholder
Text ausblenden, sobald das Feld fokussiert ist, andere würden ihn behalten. Ich musste entweder Platzhalter dazu bringen, browserübergreifend zu bleiben, was seltsame Nebenwirkungen hat, oder die Verwendung einstellenautofocus
.Also habe ich auf den ersten Schlüssel gewartet, der gegen das Body-Tag eingegeben wurde, und diesen Schlüssel in das Ziel-Eingabefeld umgeleitet. Dann werden alle beteiligten Event-Handler getötet, um die Dinge sauber zu halten.
https://jsfiddle.net/b9chris/qLrrb93w/
quelle
Es ist möglich,
autofocus
Eingabeelemente einzustellenquelle
Wenn Sie ASP.NET verwenden, können Sie verwenden
im Code auf dem Server, der der Seite das entsprechende JavaScript hinzufügt.
Andere serverseitige Frameworks verfügen möglicherweise über eine entsprechende Methode.
quelle
Verwenden Sie den folgenden Code. Bei mir funktioniert es
quelle