Немного поработав с этим, я обнаружил, что лучше всего использовать функцию setSelectionRange
, если браузер ее поддерживает; если нет, вернитесь к использованию метода в ответе Майка Берроу (т.е. замените значение на себя).
Я также устанавливаю scrollTop
на высокое значение в случае, если мы находимся в режиме вертикальной прокрутки textarea
. (Использование произвольного высокого значения кажется более надежным, чем $(this).height()
в Firefox и Chrome.)
Я сделал это как плагин jQuery. (Если вы не используете JQuery, я надеюсь, вы все еще можете получить суть достаточно легко.)
Я тестировал в IE6, IE7, IE8, Firefox 3.5.5, Google Chrome 3.0, Safari 4.0.4, Opera 10.00.
Он доступен на jquery.com как плагин PutCursorAtEnd . Для вашего удобства код выпуска 1.0 выглядит следующим образом:
// jQuery plugin: PutCursorAtEnd 1.0
// http://plugins.jquery.com/project/PutCursorAtEnd
// by teedyay
//
// Puts the cursor at the end of a textbox/ textarea
// codesnippet: 691e18b1-f4f9-41b4-8fe8-bc8ee51b48d4
(function($)
{
jQuery.fn.putCursorAtEnd = function()
{
return this.each(function()
{
$(this).focus()
// If this function exists...
if (this.setSelectionRange)
{
// ... then use it
// (Doesn't work in IE)
// Double the length because Opera is inconsistent about whether a carriage return is one character or two. Sigh.
var len = $(this).val().length * 2;
this.setSelectionRange(len, len);
}
else
{
// ... otherwise replace the contents with itself
// (Doesn't work in Google Chrome)
$(this).val($(this).val());
}
// Scroll to the bottom, in case we're in a tall textarea
// (Necessary for Firefox and Google Chrome)
this.scrollTop = 999999;
});
};
})(jQuery);