Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   как отделить нажатие символьных клавиш от функциональных? (https://javascript.ru/forum/events/1760-kak-otdelit-nazhatie-simvolnykh-klavish-ot-funkcionalnykh.html)

Kos 13.09.2008 19:02

как отделить нажатие символьных клавиш от функциональных?
 
Подскажите, пожалуйста, как отделить нажатие символьных клавиш от функциональных?

Пример: точка имеет KeyCode = 46, как и DEL, что мне делать, чтобы запретить точку и разрешить клавишу DEL?

Заранее благодарен.

ZoNT 13.09.2008 19:06

46 в e.keyCode - это дэл.
46 в e.charCode - это точка.

Kos 13.09.2008 19:13

У меня charCode почему то везде выдает undefined

Kos 13.09.2008 19:16

Вот небольшой тестовый скриптик написал:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>ТЕСТ</title>
		<script type="text/javascript" language="JavaScript1.2">
			<!--
			function data_check(n) {
				var echo = document.getElementById("echo" + n);
				var echoo = document.getElementById("echoo" + n);
				
				echo.innerHTML = event.keyCode;
				echoo.innerHTML = event.charCode;
			}
			//-->
		</script>
	</head>
	<body>
		<form>
			<input name="test" type="text" onKeyPress="data_check('')" onKeyDown="data_check('2')" onKeyUp="data_check('3')" />
		</form>
		<div id="echo">- 1 -</div><div id="echoo">0</div>
		<div id="echo2">- 2 -</div><div id="echoo2">0</div>
		<div id="echo3">- 3 -</div><div id="echoo3">0</div>
	</body>
</html>

ZoNT 13.09.2008 19:27

ну так в ИЕ его и нет :)
Смотри: запускай свой пример в ИЕ и нажимай дэл. Событие онкейпресс для него не происходит. Вот так и различай в ИЕ.

ZoNT 13.09.2008 19:28

Да и точка в ИЕ - это 190 :)

Kos 13.09.2008 19:40

190 срабатывает на onKeyDown и onKeyUp, а на onKeyPress - 46
charCode все равно undefined, и не только в ИЕ, а так же и в опере, сработало только в Google Chrome. А в мозиле почему то вообще ничего не пашет.

Если бы мне надо было бы только точку запретить - я бы обробатывал onKeyDown и не парился бы. Но суть в том, что я изначально запрещал в полях некоторые символы для ввода (например, было одно поле, в которое я разрешил вводить только цифры), делал это через onKeyPress, но когда тестировал - понял, что упраляющие клавиши теперь тоже не работают (запретив все кроме цифр в onKeyPress, я запретил и функциональные клавиши), тогда я их тут же разрешил, но вместе с функциональными клавишами добавились и нежелательные символы. И вот теперь передо мной стоит проблема как отделить нажатие символьных клавиш от функциональных, и почему в мозиле нифига не работает.

ZoNT 13.09.2008 19:46

http://javascript.ru/forum/project/1...nyjj-vvod.html

вот посмотри этот код. Он работает везде правильно. Может поймёшь, почему твой код не пашет в ФФ :)

Kos 13.09.2008 19:51

Ну что ж, спасибо. Попробую разобраться, хотя, если честно, врядли.

Kos 13.09.2008 20:32

ZoNT можешь подписать коментарии, а то я вообще ничего разобрать немогу - некоторые операторы впервый раз вижу. А еще лучше - если не трудно, покалдуй над моим скриптом.


Часовой пояс GMT +3, время: 11:49.