Преобразование ввода в кириллицу без блокировки других действий клавиатуры (копирование, вырезание, вставка и т. д.)

Я пытаюсь сделать это с помощью jQuery и трех событий keyup, keydown и keypress, и я реализовал свои собственные функции ctrl+a и ctrl+c, но должен быть другой способ преобразования латинского символа в кириллицу. Я хочу, чтобы он был бесшовным, чтобы когда пользователь набирает латинский символ, он его даже не видел, он сразу видел кириллицу, а также если он вставит какой-то текст в поле, текст тоже должен быть преобразован ...

У кого-нибудь есть хорошие идеи о том, как мне это реализовать? У меня уже есть библиотека, которая может возвращать кириллицу из латинского кода нажатия клавиши, поэтому мне просто нужно найти хороший способ реализовать ее, не блокируя все другие функции клавиатуры...

Спасибо


person Kitze    schedule 21.01.2014    source источник


Ответы (1)


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

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

Вот простая скрипта, которая меняет местами все символы (z=a). Он использует onkeydown. Магия текстового курсора не реализована.

person Tomáš Zato - Reinstate Monica    schedule 21.01.2014
comment
Я уже делаю это, но мобильные устройства не запускают события keyup и keydown, только нажатие клавиши, так что это немного усложняет ситуацию. - person Kitze; 21.01.2014
comment
Тогда все намного сложнее. Я не могу понять, как справиться с этим без каких-то неприятных тайм-аутов, чего вы не хотите делать. Но вы действительно должны указать на эту проблему в своем вопросе - это все усложняет. - person Tomáš Zato - Reinstate Monica; 21.01.2014
comment
Я реализовал магию курсора, я даже проверяю, если вы что-то выбрали, он сначала удалит это, а затем начнет печатать. Но теперь я открыл его на мобильном телефоне, и ничего не работает из-за событий keydown и keyup, черт возьми. - person Kitze; 21.01.2014
comment
Я не могу сделать больше, чем проголосовать за ваш ответ, что я уже сделал. Мне любопытно, появится ли какое-нибудь умное решение. - person Tomáš Zato - Reinstate Monica; 21.01.2014