JQuery, Javascript: изменить входное значение на клавиатуре - сохранить положение курсора в конце, но - PullRequest
0 голосов
/ 16 января 2011

Эй, ребята, Я столкнулся с небольшой досадной ошибкой, которая в моем случае не очень удобна для пользователя.

Пользователь может установить значения поля ввода с помощью клавиш со стрелками вверх и вниз. Фокус всегда устанавливается на поле ввода, поэтому пользователь может печатать после того, как выбрал значение с помощью клавиш со стрелками.

Я хочу, чтобы позиция курсора ВСЕГДА ОСТАЛАСЬ на последнем символе входного значения, чтобы пользователь мог печатать сразу после выбора значения с помощью клавиш со стрелками. Это прекрасно работает, если вы нажмете клавишу со стрелкой вниз, потому что в этом случае курсор автоматически перейдет к концу поля ввода.

Если вы нажмете клавишу «вверх», произойдет обратное - курсор переместится в начало. Мне удалось это исправить с помощью сценария "setCursorPosition", который я нашел здесь на stackoverflow.

Однако, несмотря на то, что он работает, пользователь не может «почувствовать и увидеть» его. Если я нажму клавишу «Стрелка вверх», курсор все равно будет показан в начале значения ввода. Как только я начинаю печатать, курсор переходит к концу, и он работает нормально.

Смотрите здесь: http://jsfiddle.net/3UHVY/1/

Так что мне интересно, есть ли у вас решение, чтобы курсор всегда оставался в конце поля ввода, когда я нажимаю клавишу со стрелкой вверх или вниз, и это также видно и логично для пользователя. Прямо сейчас пользователь может подумать, что ему нужно схватить мышь и вернуться обратно к полю ввода, чтобы установить курсор в конец.

1 Ответ

1 голос
/ 16 января 2011

Вы можете отключить поведение браузера по умолчанию при возврате клавиш, вернув false при нажатии клавиши вверх:

if(e.keyCode === 38)
    return false;

http://jsfiddle.net/3UHVY/5/

В противном случае, если это не удовлетворяет вашим потребностям, выможет перехватить событие keyUp и переместить курсор в конец ввода.

...