All browsers except IE6-8/Opera
Set HTMLInputElement.setSelectionRange()
to the length of the input value after explicitly setting the focus()
. The disadvantage is that it scrolls back to start once blurred.
var foo = document.getElementById("foo");
foo.value = "http://stackoverflow.com/questions/1962168/scroll-to-the-very-right-of-a-long-text-input";
foo.focus();
foo.setSelectionRange(foo.value.length,foo.value.length);
<input id="foo">
All browsers except IE/Opera
If you don’t care about IE in its entirety, then set Element.scrollLeft
to Element.scrollWidth
. The disadvantage is the less browser support.
var foo = document.getElementById("foo");
foo.value = "http://stackoverflow.com/questions/1962168/scroll-to-the-very-right-of-a-long-text-input";
foo.scrollLeft = foo.scrollWidth;
<input id="foo">
All browsers
If you’d like to support every single browser, consider to trick it with the dir
(direction) attribute which you set to rtl
(right-to-left). The disadvantage is that it’s a hack which really need to be taken into consideration when it’s editable and/or you develop a direction sensitive website, but this works on all browsers and is great on readonly inputs.
var foo = document.getElementById("foo");
foo.value = "http://stackoverflow.com/questions/1962168/scroll-to-the-very-right-of-a-long-text-input";
<input id="foo" dir="rtl">