jQuery изменить нажатие клавиши на текстовое поле

Я ищу кросс-браузер (может быть основан на jquery), чтобы изменить нажатие клавиши, выполняемое пользователем.

Захватить это не проблема. Изменение поведения на кроссбраузерность кажется проблемой.

По сути, мне нужно сопоставить некоторые дополнительные ключи со специальными символами. Например, ctrl + alt + p должен вводить специальный символ в текстовое поле или текстовое поле.

Спасибо,

-dennis


person Dennis Thrysøe    schedule 17.03.2011    source источник
comment
Будьте осторожны с этим. В зависимости от браузера (и ОС) вы можете скрывать ярлыки, которые пользователь ожидает от работы, или вы вообще не сможете их отловить. Например, сочетания клавиш Ctrl-Alt -... часто используются для общесистемных функций в Linux.   -  person RoToRa    schedule 17.03.2011
comment
Я сейчас. Но это компромисс с функциональностью. Это ситуация, когда пользователям необходимо вводить символы, которых обычно нет на их клавиатурах / раскладках. В качестве альтернативы можно использовать мышь, чтобы указать на сетку символов рядом с каждым полем ввода.   -  person Dennis Thrysøe    schedule 17.03.2011
comment
Хм. Кажется, это может решить эту проблему: stackoverflow.com/questions/1064089/   -  person Dennis Thrysøe    schedule 17.03.2011


Ответы (3)


Я уже рассмотрел кроссбраузерную технику для этого раньше на SO: Могу ли я условно изменить символ, введенный во ввод при нажатии клавиши?

Вы можете адаптировать это для своих собственных сопоставлений. Кроме того, вы должны использовать событие keydown, а не keypress, если вы обнаруживаете нажатия клавиш с участием Ctrl или Alt, поскольку не все браузеры будут запускать события нажатия клавиш, когда не набирается символ.

person Tim Down    schedule 17.03.2011

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

$(document).ready(function() 
{
    $("#target").keydown(function(event) 
    {
        if (event.ctrlKey && event.altKey && event.keyCode == '80') {
            alert("Ctrl-Alt-P combination");
        }
    }
});
person Tramov    schedule 17.03.2011
comment
Да, но мне нужно заменить вызов alert () чем-то, что действительно записывает символ - просто, возможно, другим, чем обычно пишет браузер. - person Dennis Thrysøe; 17.03.2011