Этот вопрос был задан в нескольких разных форматах, но я не могу получить ни одного ответа, который работал бы в моем сценарии.
Я использую jQuery для реализации истории команд, когда пользователь нажимает стрелки вверх / вниз. Когда нажимается стрелка вверх, я заменяю входное значение предыдущей командой и устанавливаю фокус на поле ввода, но хочу, чтобы курсор всегда располагался в конце входной строки.
Мой код, как есть:
$(document).keydown(function(e) {
var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
var input = self.shell.find('input.current:last');
switch(key) {
case 38: // up
lastQuery = self.queries[self.historyCounter-1];
self.historyCounter--;
input.val(lastQuery).focus();
// and it continues on from there
Как я могу заставить курсор помещаться в конец ввода после фокуса?
javascript
jquery
focus
cursor
Джеродсанто
источник
источник
var temp = input.focus().val(); input.val('').val(temp);
input.focus().val(input.val());
contenteditable
по какой-то причине не работает с элементами, может потому, что нужно использовать,.html()
а не.val()
Это выглядит немного странно, даже глупо, но у меня это работает:
Я не уверен, что воспроизвел вашу установку. Я предполагаю,
input
что это<input>
элемент.Изменив значение (на себя), я думаю, что курсор помещается в конец ввода. Протестировано в Firefox 3 и MSIE7.
источник
Надеюсь, это поможет вам:
источник
У Криса Койера для этого есть мини-плагин jQuery, который отлично работает: http://css-tricks.com/snippets/jquery/move-cursor-to-end-of-textarea-or-input/
Если поддерживается, он использует setSelectionRange , иначе имеет надежный запасной вариант.
Тогда вы можете просто сделать:
источник
А как насчет одной строчки ...
Эта линия у меня работает.
источник
2 ответ artlung : он работает со второй строкой только в моем коде (IE7, IE8; Jquery v1.6):
Дополнение: если элемент ввода был добавлен в DOM с помощью JQuery, в IE фокус не устанавливается. Я использовал небольшой трюк:
источник
Ссылка: @ will824 Комментарий, это решение сработало для меня без проблем с совместимостью. Остальные решения не удались в IE9.
Протестировано и работает:
источник
Я знаю, что этот ответ приходит поздно, но я вижу, что люди не нашли ответа. Чтобы клавиша вверх не помещала курсор в начало, просто
return false
из метода, обрабатывающего событие. Это останавливает цепочку событий, которая приводит к перемещению курсора. Вставка исправленного кода из OP ниже:источник
var key = e.charCode || e.keyCode || 0;
Я использую код ниже, и он отлично работает
источник
Для разных браузеров он будет разным:
Это работает в ff:
Более подробная информация представлена в этих статьях на сайте SitePoint , AspAlliance .
источник
как и другие сказали, у меня сработали очистка и заливка:
источник
сначала установите значение. затем установите фокус. когда он фокусируется, он будет использовать значение, которое существует во время фокусировки, поэтому ваше значение должно быть установлено первым.
эта логика работает для меня с приложением, которое заполняет
<input>
значение clicked<button>
.val()
устанавливается первым. затемfocus()
источник
$('input[name=item1]').val(value).focus();
Я обнаружил то же самое, что предлагали несколько человек выше. Если вы
focus()
сначала нажметеval()
на вход, курсор переместится в конец входного значения в Firefox, Chrome и IE. Если выval()
сначала нажмете в поле ввода, Firefox и Chrome поместят курсор в конец, но IE поместит его вперед, когда выfocus()
.должно сработать (по крайней мере, для меня это всегда так).
источник
Сначала вы должны установить фокус на выбранном объекте текстового поля, а затем установить значение.
источник
работает для всех браузеров, т.е.
источник
Вот еще один, один лайнер, который не переназначает значение:
источник
источник
Ответ от scorpion9 работает. Чтобы было понятнее, посмотрите мой код ниже,
источник
Он будет фокусироваться с помощью мыши
$ ("# TextBox"). Focus ();
источник