Я вообще в jQuery смотрел. Там многое уже наверное решено.
	
	
		
			Сообщение от B~Vladi
			 
		
	 | 
	| 
		keypress для меня вообще тайна, покрытая мраком... Каждый браузер генерит событие по-разному... Уж лучше тогда обходиться связкой keydown/keyup, для которой нетрудно написать обёртку.
	 | 
	
keypress для описанных мной случаев везде нормально работает - и символы в верхнем регистре тоже ОК. А в keydown/keyup как определять что нажата shift - запоминать что-ли отдельно?
	
	
		
			Сообщение от B~Vladi
			 
		
	 | 
	| 
		Насчёт Tab: событие keyup происходит уже не на том элементе, где был keydown, а там, куда попал фокус. В этой ситуации, после keydown нужно прикручивать blur.
	 | 
	
Это в опере только так, в остальных keyup  сработает также на покидаемом элементе.