Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > проблема с event.keyCode


Автор: lasalexx 25.12.2006, 11:53
хочу отследить какую клавишу ввёл клиент в textarea

Код

<html>
<head>
<title>Key Events</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript">
//<!--

function myKeyCode(e)
{
var ch=String.fromCharCode(e.keyCode)
alert(ch+" "+ch.charCodeAt(0))
}

//-->
</script>
</head>
<body>
<form name="f1">
<textarea name="t1" rows="8" cols="35" onkeydown="myKeyCode(event)"></textarea><br>
<input type="button" value="Check">
</form>
</body>
</html>


но несмотря на то что ввёл я "A" или "a", он мне возвращает 65, то есть код "A".
как я могу проследить "a"?

Автор: smartov 25.12.2006, 13:11
Так тебе нужен код клавиши или код буквы?
Ты сейчас выводишь код клавиши. Что для 'A' что для 'a' клавиша одна и та же, только модификаторы разные.
Если нужен код буквы то и бери его из value твоего textarea а не из event-a.

Автор: 12345c 25.12.2006, 13:28
Цитата
keyCode NN 6  IE 4   DOM 2 
  
Ключ Unicode для клавиши клавиатуры, которая вызвала событие. Для события onKeyPress значение представляет фактический символ, отображенный в текстовом поле (например, 65 для "A" и 97 для "a"). Но для событий onKeyDown и onKeyUp возвращается только значение верхний регистр, независимо от представленного символа. Если событие - не управляемое с клавиатуры, значение нулевое. В то время как Вы можете изменять значение этого свойства, это не влияет на символ, отображенный в текстовом поле.. 
 
http://js2.ru/files/js/event.html#keyCode

Автор: lasalexx 25.12.2006, 16:26
Цитата

Так тебе нужен код клавиши или код буквы?
Ты сейчас выводишь код клавиши. Что для 'A' что для 'a' клавиша одна и та же, только модификаторы разные.
Если нужен код буквы то и бери его из value твоего textarea а не из event-a.


пробовал брать через value, но во время обработки onkeypress или onkeydown введённая клавиша ещё не входит в value, и не получется моментального эффекта
 smile 

Автор: Nicholas_S 25.12.2006, 16:46
lasalexx, см. внимательно, бери keyCode при onKeyPress

Автор: lasalexx 25.12.2006, 21:44
Цитата

lasalexx, см. внимательно, бери keyCode при onKeyPress


в IE всё получается но в firefox onkeypress на все клавиши мне выдает код 0. а на onkeydown или onKeyUp, возвращает коды больших букв.  smile 
может в netscape  существует что то вроде event.keyCode?

Автор: 12345c 25.12.2006, 22:20
Код
<textarea onkeypress=alert(document.all?event.keyCode:event.charCode)></textarea>

Автор: lasalexx 26.12.2006, 17:04
Цитата

<textarea onkeypress=alert(document.all?event.keyCode:event.charCode)></textarea>


спасибо.
но я хочу чтоб введённая буква менялась на букву другого языка, например на русский, или на грузинский. event.keyCode меняет своё значение, но event.charCode открыто только для чтения. можно приписать нужный код к value textarea. В таком случае мне нужно пропустить введёную букву. Может кто знает как это сделать?
Или есть другой выход?

Автор: Nicholas_S 26.12.2006, 17:47
lasalexx, стоит чуть подумать и все получится:  smile 
Код

... onkeypress="this.value += 'my value'; return false;" ...

Автор: lasalexx 26.12.2006, 23:00
спасибо  smile 

Автор: Aliance 28.12.2006, 14:52
Читай мою статью о Событиях. Там есть кроссбраузерный код.

Автор: lasalexx 29.12.2006, 08:16
Цитата

Читай мою статью о Событиях. Там есть кроссбраузерный код. 


ссылку, если можно  smile 

Автор: AKS 29.12.2006, 11:03
lasalexx
Цитата

ссылку, если можно 

Оригинальная и ничем незаменимая информация:
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/obj_event.asp
http://developer.mozilla.org/en/docs/DOM:event

Автор: Alex_B 12.5.2007, 14:16
Цитата(lasalexx @ 26.12.2006,  17:04)
event.keyCode меняет своё значение

Как это можно сделать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)