Как ограничить ввод áÁ éÉ íI óÓ úÚ с испанской клавиатуры с помощью javascript?

Мы определили это регулярное выражение [a-zA-Z0-9-] и реализовали событие onkeypress для ограничения ввода, по-видимому, работает хорошо, но при использовании испанской клавиатуры позволяет вставить символ á é í ó ú, который генерируется нажатием 2 клавиш, и реализованное решение не блокирует этот вход. Очевидно, что в этом случае не следует использовать событие нажатия клавиши. Есть ли у кого-нибудь идея лучшего подхода к реализации этого ограничения? Требование состоит в том, чтобы избегать ввода символов, отличных от [a-zA-Z0-9-], но посимвольно


person jvacaq    schedule 02.10.2014    source источник


Ответы (1)


Регулярное выражение обработчика ключевых событий должно быть закреплено. Попробуйте ^[a-zA-Z0-9-]+$

person Community    schedule 02.10.2014
comment
Проблема, с которой я столкнулся, заключается в следующем: событие нажатия клавиши не запускается при нажатии клавиши deadacute, вы знаете, что á é í ó ú генерируются нажатием клавиши deadacute, а затем a e i o u. событие нажатия клавиши не работает в этих случаях - person jvacaq; 07.10.2014
comment
В основном я использую MFC, но после некоторого чтения я сделаю предположение. Каждая клавиша должна иметь событие keydown/keyup, даже мертвые клавиши. Попробуйте обработать эти события, найдите "U+0302" (Combining Circumflex Accent key) мертвый ключ, о котором вы говорите. Если найдено, вызовите preventDefault() для этого элемента только для этого ключа. - person ; 07.10.2014
comment
Также здесь может быть обходной путь - stackoverflow.com/questions/10721499/ - person ; 07.10.2014