我写了一段javascript代码,在文本区域内按键。我使用onkeydown事件来捕捉按下的键,并在事件触发时调用函数。在函数中,我使用event.来按键。但这并没有给出正确的按键。对于按下的任何字符,它会给出相应大写字符的Ascii值(仅限65到90)。即使键入了小写字符,它也不会为小写字符(即97到122)提供Ascii值。例如-如果我键入"a",它会给出"a"的Ascii值有人知道为什么会发生这种事吗?这是我正在使用的代码-
var mainDoc = document.getElementById("mainDoc");
mainDoc.onkeydown = function(event){keyPress(event);}
function keyPress(event)
{
alert("key code : "+ event.which + " );
}
我尝试使用onkeypress事件。这似乎工作得很好,但它不会捕获alt、control、箭头键等。
keydown
和keyup
(大部分)根本不给您字符,它们给您键代码。keypress
是获取字符的位置(如果需要,还可以知道在事件对象的ctrlKey
、altKey
、shiftKey
和metaKey
属性上键入该字符时修改键的状态)。这个页面进入了疯狂的JavaScript键盘事件的爱的细节。。。
问题是keydown
事件将报告按键,即物理按键按下。keypress
事件将报告转换的键,这意味着从按下的键派生的字符(Shift+a==A
)。为了获得实际的键,您可能需要同时跟踪keydown
/keyup
(用于监视修改键)和keypress
(用于监视实际的字母数字用户输入)。
来源http://www.bloggingdeveloper.com/post/KeyPress-KeyDown-KeyUp-The-Difference-Between-Javascript-Key-Events.aspx
为了理解keydown和keypress之间的区别有助于理解"字符"one_answers"键"。"键"是计算机键盘上的物理按钮,而"字符"是通过按下按钮键入的符号。理论上keydown和keyup事件表示按键被按下或释放,而按键事件表示正在键入的字符。这个该理论的实现并非在所有浏览器中都是一样的。
function getKeyCode(event) {
event = event || window.event;
return event.keyCode;
}
使用event.keyCode将为u提供keyCode;)
g.r.