Jak skupić się na polu tekstowym formularza przy ładowaniu strony za pomocą jQuery?


Odpowiedzi:


378

Ustaw fokus na pierwszym polu tekstowym:

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

Robi to również pierwsze pole tekstowe, ale możesz zmienić [0] na inny indeks:

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

Lub możesz użyć identyfikatora:

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

2
Jeśli używasz okna dialogowego, zapoznaj się z tą odpowiedzią, jeśli powyższe nie działa stackoverflow.com/a/20629541/966609
Matt Canty

1
$('input[type="text"]').get(0).focus(); ... pracował dla mnie
Rav


27

Pewnie:

<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
Polecam umieszczenie skryptu za elementem HTML.
Ali Sheikhpour,

1
Skrypt @AliSheikhpour znajduje się w opakowaniu dom ready, więc nie ma znaczenia, że ​​znajduje się przed elementem HTML, ale i tak nie powinien być na czele.
Popnoodles,


18

Zanim to zrobisz, pomyśl o interfejsie użytkownika. Zakładam (choć żadna odpowiedź nie powiedziała), że zrobisz to, gdy dokument zostanie załadowany przy użyciu ready()funkcji jQuery . Jeśli użytkownik skupił się już na innym elemencie przed załadowaniem dokumentu (co jest całkowicie możliwe), niezwykle denerwujące jest dla niego skradzienie fokusa.

Możesz to sprawdzić, dodając onfocusatrybuty do każdego <input>elementu, aby zarejestrować, czy użytkownik już skupił się na polu formularza, a następnie nie kradnąc fokusa, jeśli:

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
Twoja perspektywa jest nie tylko technicznie poprawna, ale również twoje rozważania dotyczące najlepszego możliwego UX są znakomite. Brawo!
Folusho Oladipo

12

HTML:

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

jQuery:

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

1
jeśli używasz HTML5, po prostu dodaj autofocusatrybut do elementu wejściowego?
Adarsh ​​Madrecha

Jak ten atrybut jest używany i czy stanie się elementem skupionym, gdy tylko pojawi się jego forma nadrzędna?
Khom Nazid

8

Przepraszam, że wpadłem na stare pytanie. Znalazłem to przez Google.

Warto również zauważyć, że można użyć więcej niż jednego selektora, dzięki czemu można kierować na dowolny element formularza, a nie tylko jeden określony typ.

na przykład.

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

Spowoduje to skupienie pierwszego znalezionego tekstu lub obszaru tekstowego i oczywiście możesz dodać także inne selektory do miksu. Hnady, jeśli nie możesz być pewien, że określony typ elementu jest pierwszy, lub jeśli chcesz czegoś nieco ogólnego / wielokrotnego użytku.


Doskonała sugestia @Andrew.
DOK

6

Tego wolę używać:

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

3
To zły sposób na robienie rzeczy, aby skupić się na <wejściu> przy ładowaniu dokumentów, wystarczy użyć autofocusatrybutu dostarczonego przez HTML5
OverCoder

3

miejsce po wejściu

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

0

Najprostszy i najłatwiejszy sposób na osiągnięcie tego

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

0

Sama linia $('#myTextBox').focus()nie umieści kursora w polu tekstowym, zamiast tego użyj:

$('#myTextBox:text:visible:first').focus();
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.