Como se concentrar em um campo de texto de entrada de formulário no carregamento da página usando o jQuery?


Respostas:


378

Defina o foco no primeiro campo de texto:

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

Isso também faz o primeiro campo de texto, mas você pode alterar o [0] para outro índice:

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

Ou você pode usar o ID:

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

2
Se estiver usando um diálogo consulte esta resposta se o acima não está funcionando stackoverflow.com/a/20629541/966609
— Matt Canty

1
$('input[type="text"]').get(0).focus(); ... trabalhou para mim
— Rav


27

Certo:

<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
Eu recomendo trazer o script após o elemento html.
— Ali Sheikhpour

1
O script @AliSheikhpour está dentro do wrapper dom, portanto, não importa que esteja antes do elemento html, mas não deve estar na cabeça de qualquer maneira.
— Popnoodles

22

Por que todo mundo está usando o jQuery para algo simples como este.

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

15
Porque a pergunta está marcada como jQuery.
— Adarsh ​​Madrecha

18

Pense na sua interface do usuário antes de fazer isso. Presumo (embora nenhuma das respostas tenha dito isso) que você fará isso quando o documento for carregado usando a ready()função do jQuery . Se um usuário já se concentrou em um elemento diferente antes do carregamento do documento (o que é perfeitamente possível), é extremamente irritante para ele ter o foco roubado.

Você pode verificar isso adicionando onfocusatributos em cada um dos seus <input>elementos para registrar se o usuário já se concentrou em um campo de formulário e, em seguida, não rouba o foco se tiver:

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
Sua perspectiva não é apenas tecnicamente correta, mas sua consideração pelo melhor UX possível é excelente. Bravo!
— Folusho Oladipo 06/02

12

HTML:

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

jQuery:

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

1
se estiver usando html5, basta adicionar autofocusatributo ao elemento de entrada?
— Adarsh ​​Madrecha

Como esse atributo é usado e se tornará o elemento focado assim que o formulário pai aparecer?
— Khom Nazid 8/06/19

8

Desculpe por responder a uma pergunta antiga. Eu encontrei isso via google.

Também é importante notar que é possível usar mais de um seletor, portanto, você pode direcionar qualquer elemento do formulário, e não apenas um tipo específico.

por exemplo.

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

Isso focalizará a primeira entrada ou área de texto que encontrar e, é claro, você também pode adicionar outros seletores à mistura. Por isso, se você não pode ter certeza de que um tipo de elemento específico é o primeiro ou se deseja algo um pouco geral / reutilizável.


Excelente sugestão @Andrew.
— DOK

6

Isto é o que eu prefiro usar:

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

3
É ruim maneira de fazer as coisas, para se concentrar em um <input> na carga do documento, basta usar o autofocusatributo fornecido pelo HTML5
— OverCoder

3

colocar após a entrada

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

0

A maneira mais simples e fácil de conseguir isso

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

0

A linha $('#myTextBox').focus()sozinha não colocará o cursor na caixa de texto; em vez disso, use:

$('#myTextBox:text:visible:first').focus();
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.