175 Stimmen

Wie kann man den Fokus automatisch auf ein Textfeld setzen, wenn eine Webseite geladen wird?

Wie kann man den Fokus automatisch auf ein Textfeld setzen, wenn eine Webseite geladen wird?

Gibt es dafür ein HTML-Tag oder muss es per Javascript geschehen?

0 Stimmen

263voto

Ben Scheirman Punkte 39742

Wenn Sie Jquery verwenden:

$(function() {
  $("#Box1").focus();
});

oder Prototyp:

Event.observe(window, 'load', function() {
  $("Box1").focus();
});

oder einfaches Javascript:

window.onload = function() {
  document.getElementById("Box1").focus();
};

aber denken Sie daran, dass dies andere onload-Handler ersetzen wird, so schauen Sie addLoadEvent() in Google für einen sicheren Weg, um onload-Handler anhängen, anstatt zu ersetzen.

3 Stimmen

Warum nicht Handler auf das Body-Element setzen? Irgendein Hinweis? Danke

7 Stimmen

Denn es ist viel sauberer, Javascript vom HTML zu trennen. Sie sollten Skripting-Verhalten zu visuellen Elementen in Ihrem HTML hinzufügen.

100voto

dave1010 Punkte 14708

In HTML gibt es eine autofocus Attribut für alle Formularfelder. Es gibt ein gutes Tutorial dazu in Eintauchen in HTML 5 . Leider ist es derzeit nicht unterstützt bei IE-Versionen kleiner als 10.

Das HTML 5-Attribut zu verwenden und auf eine JS-Option zurückzugreifen:

<input id="my-input" autofocus="autofocus" />
<script>
  if (!("autofocus" in document.createElement("input"))) {
    document.getElementById("my-input").focus();
  }
</script>

Es sind keine jQuery-, Onload- oder Event-Handler erforderlich, da sich das JS unterhalb des HTML-Elements befindet.

Edit: ein weiterer Vorteil ist, dass es mit deaktiviertem JavaScript in einigen Browsern funktioniert und Sie das JavaScript entfernen können, wenn Sie ältere Browser nicht unterstützen wollen.

Edit 2: Firefox 4 unterstützt jetzt die autofocus Attribut, so dass der IE keine Unterstützung bietet.

3 Stimmen

Was hat es mit dem autofocus="aufofocus" ? Alle von Ihnen angegebenen Links sagen nur, dass das Attribut hinzugefügt werden soll: autofocus .

7 Stimmen

In den Tagen von XHTML und HTML4 war es üblich, die attribute="value" für boolesche Attribute. HTML5 kam mit der "leeren Attributsyntax" daher und wir ließen die Redundanz fallen. Jetzt können wir <input checked disabled autofocus data-something>

0 Stimmen

Ich mag diesen Ansatz... Der Code gehört zur Eingabe... weg mit der Eingabe und bumm, der zugehörige Code ist da... Wir verirren uns heutzutage so sehr... Ich schließe den Kreis und versuche zu vereinfachen...

17voto

Espo Punkte 40386

Sie müssen Javascript verwenden:

<BODY onLoad="document.getElementById('myButton').focus();">

@Ben weist darauf hin, dass Sie keine Ereignis-Handler auf diese Weise hinzufügen sollten. Das ist zwar eine andere Frage, aber er empfiehlt, diese Funktion zu verwenden:

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

Dann rufen Sie addLoadEvent auf Ihrer Seite auf und verweisen auf eine Funktion, die den Fokus auf das gewünschte Textfeld setzt.

16voto

Arjun Punkte 165

Schreiben Sie einfach Autofokus in das Textfeld. Das ist einfach und funktioniert wie folgt:

 <input name="abc" autofocus></input>

Ich hoffe, das hilft.

1 Stimmen

Dies ist gut, aber das Problem ist, wenn Sie Schritte mit gleitenden Stil, das wäre nicht nützlich, vor allem, wenn die Eingabe-Typ ist auf der Stufe 3 oder 4 für ex

13voto

Amir Chatrbahr Punkte 2100

Sie können es leicht tun, indem Sie jquery auf diese Weise verwenden:

<script type="text/javascript">

    $(document).ready(function () {
        $("#myTextBoxId").focus();
    });

</script>

durch Aufruf dieser Funktion in $(document).ready() .

Das bedeutet, dass diese Funktion ausgeführt wird, wenn das DOM fertig ist.

Weitere Informationen über die Funktion READY finden Sie unter : http://api.jquery.com/ready/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X