Минималистично волшебный JS подход:
var field = /* ваше текстовое поле*/,
rx = new RegExp('[^A-Za-z0-9_]'), // регулярное выражение для фильтрации
ff = function() { // функция "фильтрации"
var s = field.value;
while (s.match(rx)) s = s.replace(rx, '');
// для наилучшего эффекта, тут еще нужно вставить обработку выделения в поле
if (field.value != s) field.value = s;
};
field.oninput = function(e) {
ff(); // запуск фильтрации
setTimeout(ff, 0); // на случай, если это почему-то не сработало, запускаем еще раз на следующем кадре.
}
__________________
Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...