How do you set the cursor position in a text field using jQuery? I’ve got a text field with content, and I want the users cursor to be positioned at a certain offset when they focus on the field. The code should look kind of like this:
$('#input').focus(function() { $(this).setCursorPosition(4); });
What would the implementation of that setCursorPosition function look like? If you had a text field with the content abcdefg, this call would result in the cursor being positioned as follows: abcd**|**efg.
Java has a similar function, setCaretPosition. Does a similar method exist for javascript?
Update: I modified CMS’s code to work with jQuery as follows:
new function($) { $.fn.setCursorPosition = function(pos) { if (this.setSelectionRange) { this.setSelectionRange(pos, pos); } else if (this.createTextRange) { var range = this.createTextRange(); range.collapse(true); if(pos < 0) { pos = $(this).val().length + pos; } range.moveEnd('character', pos); range.moveStart('character', pos); range.select(); } } }(jQuery);
I have two functions:
Then you can use setCaretToPos like this:
Live example with both a
textareaand aninput, showing use from jQuery:As of 2016, tested and working on Chrome, Firefox, IE11, even IE8 (see that last here; Stack Snippets don’t support IE8).