Come concentrarsi su un campo di testo di input del modulo al caricamento della pagina utilizzando jQuery?


Risposte:


378

Imposta lo stato attivo sul primo campo di testo:

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

Questo fa anche il primo campo di testo, ma puoi cambiare [0] in un altro indice:

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

Oppure puoi usare l'ID:

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

2
Se si utilizza una finestra di dialogo, vedere questa risposta se quanto sopra non funziona stackoverflow.com/a/20629541/966609
Matt Canty

1
$('input[type="text"]').get(0).focus(); ... ha funzionato per me
Rav


27

Sicuro:

<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
Consiglio di portare lo script dopo l'elemento html.
Ali Sheikhpour,

1
Lo script @AliSheikhpour è nel wrapper dom ready, quindi non importa che sia prima dell'elemento html, ma non dovrebbe comunque essere in testa.
Popnoodles,

22

Perché tutti usano jQuery per qualcosa di semplice come questo.

<body OnLoad="document.myform.mytextfield.focus();">

15
Perché la domanda è taggata come jQuery.
Adarsh ​​Madrecha,

18

Pensa alla tua interfaccia utente prima di farlo. Suppongo (anche se nessuna delle risposte lo ha detto) che lo farai quando il documento viene caricato utilizzando la ready()funzione di jQuery . Se un utente si è già concentrato su un elemento diverso prima che il documento sia stato caricato (il che è perfettamente possibile), è estremamente irritante per loro che la messa a fuoco venga rubata.

Puoi verificarlo aggiungendo onfocusattributi in ciascuno dei tuoi <input>elementi per registrare se l'utente si è già concentrato su un campo modulo e quindi non rubare lo stato attivo se hanno:

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
La tua prospettiva non è solo tecnicamente corretta, ma la tua considerazione per la migliore UX possibile è squisita. Bravo!
Folusho Oladipo,

12

HTML:

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

jQuery:

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

1
se usi html5, aggiungi semplicemente l' autofocusattributo all'elemento input?
Adarsh ​​Madrecha,

Come viene usato quell'attributo e diventerà l'elemento focalizzato non appena appare la sua forma principale?
Khom Nazid,

8

Ci scusiamo per aver posto una vecchia domanda. Ho trovato questo tramite Google.

Vale anche la pena notare che è possibile utilizzare più di un selettore, quindi è possibile scegliere come target qualsiasi elemento del modulo e non solo un tipo specifico.

per esempio.

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

Questo focalizzerà il primo input o textarea che trova, e ovviamente puoi anche aggiungere altri selettori nel mix. Hnady se non puoi essere certo che uno specifico tipo di elemento sia il primo, o se vuoi qualcosa di un po 'generale / riutilizzabile.


Ottimo suggerimento @Andrew.
DOK

6

Questo è ciò che preferisco usare:

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

3
È un brutto modo di fare le cose, concentrarsi su un <input> sul caricamento del documento, basta usare l' autofocusattributo fornito da HTML5
OverCoder

3

posto dopo input

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

0

Il modo più semplice e semplice per raggiungere questo obiettivo

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

0

La $('#myTextBox').focus()sola riga non posizionerà il cursore nella casella di testo, invece usa:

$('#myTextBox:text:visible:first').focus();
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.