У меня есть код прослушивания KeyDown, и я хочу, чтобы отменить или заблокировать ключ в зависимости от некоторых вещей (например, текст длины, только цифры и т.д.)Проблемные 186 и коды клавиш 222, как поймать их
Когда ты нажмите `или '(коды клавиш 186 и 222) хром переходит в состояние псевдожидкости, он прослушивает второй ключ, а затем отображает один или два символа. (У меня есть Win XP, испанский клавиатуры, хром последняя версия)
Например 186 + 80 дает: `р >> 2 символов но 186 + 79 дает: ò >> 1 персонаж
У меня есть возвращение код внутри средства управления событиями, чтобы проверить или не зацепить ключ.
Моя проблема, я не знаю, как отменить это 2 символа.
Вопрос: Есть ли способ обнаружить это поведение? Любой способ получить «реальный» или «конечный» характер?
Может быть, идея может заключаться в проверке значения текста? Но когда и как? Как только вы вернетесь, текст обновляется, и, возможно, setTimeout может быть исправлением ....?
Я немного испорчен. Кроме того, я подозреваю, что все зависит от S.O., country cfg и т. Д.
Некоторые идеи будут оценены.
function keypressed (event) {
// ------------------------------------------------
var lock=false,chrTyped, chrCode=0, evt=event?event:event;
if (evt.which!=null) chrCode = evt.which; else chrCode = evt.keyCode;
if (chrCode==0) chrTyped = 'SPECIAL KEY';
else chrTyped = String.fromCharCode(chrCode);
// ---------------------------------------------------
//special keys & backspace [\b] work as usual:
if (chrTyped.match(/[\b]|SPECIAL/)) return true;
if (evt.altKey || evt.ctrlKey || chrCode<28) lock=false;
if (lock)
{ if (evt.preventDefault) evt.preventDefault();
evt.returnValue=false;
return false;
}
else
if (keys_used.length==0) return true;
}
Вы читаете значение из определенного ввода текста или получаете нажатия клавиш на всей странице? –
@eskimo, да (конечно) конкретный ввод текста – civiltomain
Попробуйте [эта скрипка (она использует jQuery хотя)] (http://jsfiddle.net/bj077ftm/) –