4

我编写了一段 javascript 代码来获取在文本区域内按下的键。我已经使用 onkeydown 事件来捕获按下的键,并在触发事件时调用一个函数。在函数中,我使用 event.which 来按下按键。但这并没有给出正确的按键。对于按下的任何字符,它都会给出相应大写字符的 Ascii 值(仅限 65 到 90)。它不会为小写字符提供 Ascii 值,即 97 到 122,即使已键入小写字符也是如此。例如 - 如果我输入“a”,它会给出“A”的 Ascii 值。有人知道为什么会这样吗?这是我正在使用的代码 -

var mainDoc = document.getElementById("mainDoc");
mainDoc.onkeydown = function(event){keyPress(event);}
function keyPress(event)
{
    alert("key code : "+ event.which + " );
}

我尝试使用 onkeypress 事件。这似乎工作正常,但它不捕获 alt、控制、箭头键等。

4

4 回答 4

6

keydown并且(大部分)根本keyup不给你字符,它们给你键码。是您获取字符的地方(如果您需要知道,还有在事件对象的、、和属性上键入该字符时修饰键的状态)。本页详细介绍了 JavaScript 中的键盘事件的疯狂......keypressctrlKeyaltKeyshiftKeymetaKey

于 2012-03-28T10:07:54.090 回答
1

问题是该keydown事件将报告按键- 即按下物理键。该keypress事件将报告已翻译的键,即从按下的键 ( Shift+ a== A) 派生的字符。为了获得实际的键,您可能需要同时跟踪keydown/ keyup(以监视修饰键)和keypress(以监视实际的字母数字用户输入。)

于 2012-03-28T10:06:56.610 回答
0

来自http://www.bloggingdeveloper.com/post/KeyPress-KeyDown-KeyUp-The-Difference-Between-Javascript-Key-Events.aspx

为了了解 keydown 和 keypress 之间的区别,了解“字符”和“键”之间的区别很有用。“键”是计算机键盘上的物理按钮,而“字符”是通过按下按钮键入的符号。理论上,keydown 和 keyup 事件代表按键被按下或释放,而 keypress 事件代表一个字符被输入。该理论的实现在所有浏览器中并不相同。

于 2012-03-28T10:09:50.780 回答
-3
function getKeyCode(event) {
   event = event || window.event;
   return event.keyCode;
}

使用 event.keyCode 会给你 keycode ;)

于 2012-03-28T10:07:56.430 回答