Image

маска ввода

Задача следующая: необходимо перехватывать события клавиатуры с поля ввода, разрешать или запрещать ввод каких-то символов, а если ввод был разрешён, то и форматировать в соответствии с шаблоном.

Запрет на ввод можно производить по событию onkeydown. тут ничего страшного нет, кроме того, что FireFox использует немного другие свойства объекта event. А так: возвращаем событию false, если хотим запретить ввод, и true, если хотим разрешить.

Проблемы начинаются при форматировании. Форматирование можно производить по событию onkeypress или onkeydown, сначала извлекая значение поля, а потом возвращая его с форматированием. Но что делать, если был включён автоповтор при долгом нажатии? На каком этапе его ловить? Ведь, если его не отлавливать, то форматирование вставится после повторяющихся символов. Есть ещё одна подлость: Опера не переставляет курсор в конец поля ввода после переформатирования, поэтому добавляемые из скрипта символы оказываются после курсора, в результате получается каша.

Есть ли способы этого избежать?