Wie kann ich mich beim Laden einer Seite mit jQuery auf ein Texteingabefeld für Formulare konzentrieren?


238

Dies ist wahrscheinlich sehr einfach, aber könnte mir jemand sagen, wie der Cursor beim Laden der Seite auf einem Textfeld blinkt?


96
Einfache Fragen machen uns hier nichts aus.
DOK

Überprüfen Sie die Antwort von
Sohail Arif

Antworten:


379

Setzen Sie den Fokus auf das erste Textfeld:

 $("input:text:visible:first").focus();

Dies macht auch das erste Textfeld, aber Sie können die [0] in einen anderen Index ändern:

$('input[@type="text"]')[0].focus(); 

Oder Sie können die ID verwenden:

$("#someTextBox").focus();

2
Wenn Sie einen Dialog verwenden, lesen
Matt Canty

1
$('input[type="text"]').get(0).focus(); ... arbeitete für mich
Rav


27

Sicher:

<head>
    <script src="jquery-1.3.2.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function() {
            $("#myTextBox").focus();
        });
    </script>
</head>
<body>
    <input type="text" id="myTextBox">
</body>

2
Ich empfehle, das Skript nach dem HTML-Element zu bringen.
Ali Sheikhpour

1
Das @ AliSheikhpour-Skript befindet sich im dom ready-Wrapper, sodass es keine Rolle spielt, dass es sich vor dem HTML-Element befindet, aber es sollte sowieso nicht im Kopf stehen.
Popnoodles


18

Denken Sie an Ihre Benutzeroberfläche, bevor Sie dies tun. Ich gehe davon aus (obwohl keine der Antworten dies gesagt hat), dass Sie dies tun, wenn das Dokument mit der ready()Funktion von jQuery geladen wird . Wenn sich ein Benutzer bereits vor dem Laden des Dokuments auf ein anderes Element konzentriert hat (was durchaus möglich ist), ist es äußerst ärgerlich, wenn ihm der Fokus gestohlen wird.

Sie können dies überprüfen, indem Sie onfocusjedem Ihrer <input>Elemente Attribute hinzufügen , um aufzuzeichnen, ob sich der Benutzer bereits auf ein Formularfeld konzentriert hat, und dann den Fokus nicht zu stehlen, wenn er Folgendes hat:

var anyFieldReceivedFocus = false;

function fieldReceivedFocus() {
    anyFieldReceivedFocus = true;
}

function focusFirstField() {
    if (!anyFieldReceivedFocus) {
        // Do jQuery focus stuff
    }
}


<input type="text" onfocus="fieldReceivedFocus()" name="one">
<input type="text" onfocus="fieldReceivedFocus()" name="two">

2
Ihre Perspektive ist nicht nur technisch korrekt, sondern Ihre Überlegung für die bestmögliche UX ist exquisit. Bravo!
Folusho Oladipo

12

HTML:

  <input id="search" size="10" />

jQuery:

$("#search").focus();

1
Wenn Sie HTML5 verwenden, fügen Sie autofocusdem Eingabeelement einfach ein Attribut hinzu .
Adarsh ​​Madrecha

Wie wird dieses Attribut verwendet und wird es zum fokussierten Element, sobald die übergeordnete Form angezeigt wird?
Khom Nazid

8

Tut mir leid, dass ich eine alte Frage gestellt habe. Ich habe das über Google gefunden.

Es ist auch erwähnenswert, dass es möglich ist, mehr als einen Selektor zu verwenden, sodass Sie auf jedes Formularelement und nicht nur auf einen bestimmten Typ abzielen können.

z.B.

$('#myform input,#myform textarea').first().focus();

Dadurch wird der erste gefundene Eingabe- oder Textbereich fokussiert, und Sie können natürlich auch andere Selektoren zum Mix hinzufügen. Hnady, wenn Sie nicht sicher sein können, ob ein bestimmter Elementtyp an erster Stelle steht, oder wenn Sie etwas allgemeines / wiederverwendbares wünschen.


Ausgezeichneter Vorschlag @ Andrew.
DOK

6

Folgendes bevorzuge ich:

<script type="text/javascript">
    $(document).ready(function () {
        $("#fieldID").focus(); 
    });
</script>

3
Es ist eine schlechte Art, Dinge zu tun, sich auf einen <Eingang> beim Laden von Dokumenten zu konzentrieren. Verwenden Sie einfach das autofocusAttribut von HTML5
OverCoder

3

nach Eingabe platzieren

<script type="text/javascript">document.formname.inputname.focus();</script>

0

Der einfache und einfachste Weg, dies zu erreichen

$('#button').on('click', function () {
    $('.form-group input[type="text"]').attr('autofocus', 'true');
});

0

Die Zeile $('#myTextBox').focus()allein setzt den Cursor nicht in das Textfeld, sondern verwendet:

$('#myTextBox:text:visible:first').focus();
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.