2011-01-16 2 views
0

эй, ребята, Я столкнулся с немного раздражающей ошибкой, которая в моем случае не очень удобна для пользователя.jquery, javascript: изменить значение ввода на клавиатуре - сохранить позицию курсора в конце, но

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

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

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

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

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

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

+0

Вы переписываете поведение текстового поля по умолчанию, чтобы улучшить пользовательский интерфейс? Я сомневаюсь, что это имеет смысл, так как пользователь ожидает другого поведения. –

+0

Также это раздражало меня, потому что Opera автоматически давала мне раскрывающийся список ненужных вещей, когда я нажал кнопку «вниз» ... – jcuenod

+0

@ j3frea вы могли бы остановить это поведение с помощью autocomplete = «off» – matt

ответ

1

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

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

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

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

+0

спасибо! здорово! – matt

Смежные вопросы