Удаление выборочных символов при вводе в поле
В интерфейсах бывают специфичные поля, которые не принимает какие-то символы. Например, в телефонном номере или пин-коде не будет букв.
Если из лейбла (подписи к полю) очевидно, какие символы не подойдут, незачем разрешать их ввод. Лучше нагрузили компьютер уборкой лишнего и не просить человека что-то стирать.
Беспокоить сообщениями о неправильном вводе при этом не нужно. Какой шанс, что человек хотел ввести в номер букву? Подсказка «В номере телефона допустимы только цифры...» только отвлекает. Все знают, что букв там быть не должно: «Спасибо, кэп!»
Для таких полей в техзадании для разработчика пишут «нельзя ничего, кроме цифр, скобок, тире и дефисов». Это двусмысленно. Не реагировать на нажатия клавиш, или вводить, а потом стирать?
Предлагаю разрешать вводить всё, а после ввода неподходящего символа, сразу его стирать. Сначала кажется, что будет дёргающаяся ерунда. Но она даст пользователю обратную связь. Покажет, что и поле, и клавиатура работают. Ещё покажет, что человек ввёл что-то не то. Вряд ли он хотел писать буквы в телефонный номер, скорее промахнулся. Заметить стирающуюся букву проще, чем не введённую.
Такое поведение всегда вызывало ощущение глючности интерфейса. Лучше бордер на секунду красным подсвечивать, но символы не вводить. Это даст понять, что всё работает и машина приняла команду, но не будет дерганий.
Андрей, спасибо за приём! Я только не понял, как пользователь поймёт, что означает лизание бордера?
Красный бордер при некорректно введенных данных — привычное поведение многих интерфейсов. Только обычно это происходит при отправке формы или уходе из поля ввода. Я же предлагаю давать мгновенную обратную связь.
Подобное поведение есть в клавиатурных тренажерах: vse10.ru. В этом примере подсвечивают красным кнопку на виртуальной клавиатуре, поскольку она — локус внимания. Но у меня была раньше программа, в которой подсвечивалось на секунду поле. Было сразу понятно, что я допустил ошибку при вводе.
Было бы хорошо показывать подсказку, если человек несколько раз подряд пытается ввести запрещенные символы.
А как по такой обратной связи понять, в чём именно проблема? Если опечатался и думал, что ввёл цифру, а на деле ввёл букву, то как понять, что случилось? Человек думает, что ввёл в поле телефона цифру, интерфейс показывает, что ввод — ошибка. Что делать?