301

This is probably very simple, but could somebody tell me how to get the cursor blinking on a text box on page load?

0

13 Answers 13

452

Set focus on the first text field:

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

This also does the first text field, but you can change the [0] to another index:

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

Or, you can use the ID:

$("#someTextBox").focus();
Sign up to request clarification or add additional context in comments.

3 Comments

If using a dialog please see this answer if the above is not working stackoverflow.com/a/20629541/966609
$('input[type="text"]').get(0).focus(); ...worked for me
.focus() was depricated in 3.3, for newer versions use .trigger('focus');
114

You can use HTML5 autofocus for this. You don't need jQuery or other JavaScript.

<input type="text" name="some_field" autofocus>

Note this will not work on IE9 and lower.

3 Comments

autofocus does not work in IE11 either stackoverflow.com/questions/34068302/…
This works for my scenario but the selected answer did not for some reason.
This is great and also shorter, even if a single letter id was used! :P
34

Sure:

<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>

3 Comments

I recommend to bring the script after html element.
@AliSheikhpour script is within the dom ready wrapper so it doesn't matter that it's before the html element, but it shouldn't be in head anyway.
Thank you, I tried very hard and your answer only solved my problem. A plus point.Thanks
23

Why is everybody using jQuery for something simple as this.

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

1 Comment

Because the question is tagged as jQuery.
21

Think about your user interface before you do this. I assume (though none of the answers has said so) that you'll be doing this when the document loads using jQuery's ready() function. If a user has already focussed on a different element before the document has loaded (which is perfectly possible) then it's extremely irritating for them to have the focus stolen away.

You could check for this by adding onfocus attributes in each of your <input> elements to record whether the user has already focussed on a form field and then not stealing the focus if they have:

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">

1 Comment

Your perspective is not only technically correct, but your consideration for the best UX possible is exquisite. Bravo!
14

HTML:

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

jQuery:

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

2 Comments

if using html5, just add autofocus attribute to the input element?
How is that attribute used, and will it become the focused element as soon as its parent form appears?
11

Sorry for bumping an old question. I found this via google.

Its also worth noting that its possible to use more than one selector, thus you can target any form element, and not just one specific type.

eg.

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

This will focus the first input or textarea it finds, and of course you can add other selectors into the mix as well. Handy if you can't be certain of a specific element type being first, or if you want something a bit general/reusable.

Comments

7

This is what I prefer to use:

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

1 Comment

It's bad way to do things, to focus on an <input> on document load, just use the autofocus attribute provided by HTML5
3

place after input

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

Comments

3

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

You can also use HTML5 element <autofocus>

Comments

2

The line $('#myTextBox').focus() alone won't put the cursor in the text box, instead use:

$('#myTextBox:text:visible:first').focus();

Comments

0

The Simple and easiest way to achieve this

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

Comments

0

.focus() is dreprecated. Use .trigger("focus")

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.