17

I've found a couple resources for how to place the cursor in a textarea at the end of the text, but I can't sort out a simple way to make it appear at the beginning.

I'm prepopulating the textarea with some text and just want to make it easier on the users.

Mike Buckbee
  • 6,793
  • 2
  • 33
  • 36

5 Answers5

19

Pass a reference to your textarea to this JS function.

function resetCursor(txtElement) { 
    if (txtElement.setSelectionRange) { 
        txtElement.focus(); 
        txtElement.setSelectionRange(0, 0); 
    } else if (txtElement.createTextRange) { 
        var range = txtElement.createTextRange();  
        range.moveStart('character', 0); 
        range.select(); 
    } 
}
Cᴏʀʏ
  • 105,112
  • 20
  • 162
  • 194
8

Depending on your needs, a simpler Javascript version is:

document.querySelector("textarea").focus(); //set the focus - cursor at end
document.querySelector("textarea").setSelectionRange(0,0); // place cursor at start

You can't just string them together either, to get rid of the double querySelector - not sure why.

Nathan
  • 4,358
  • 2
  • 10
  • 26
2

The jQuery way:

$('textarea[name="mytextarea"]').focus().setSelectionRange(0,0);
tim
  • 2,530
  • 3
  • 26
  • 45
  • 1
    This won't work. Should be: `$('textarea[name="mytextarea"]').focus().get(0).setSelectionRange(0,0);` ... the added `get(0)` is to expose the DOM element since `setSelectionRange()` is a DOM method rather than a jQuery one. – A. Genedy Jan 28 '22 at 00:15
0

please, use for textarea with scroll after using $(textareaSelector).val(val)

$(textareaSelector)[0].setSelectionRange(0, 0);
$(textareaSelector).focus();
andrei040191
  • 408
  • 4
  • 7
-4

Removed the spaces between the tags
like this:

<textarea rows="5" cols="50" name="extra"></textarea>
Sachith Muhandiram
  • 2,819
  • 10
  • 45
  • 94
Mack95
  • 1
  • 2