javascript事件的问题.只提供大写字符

Issue with javascript event.which give characters in upper case only

本文关键字:字符 事件 问题 javascript      更新时间:2023-09-26

我写了一段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、箭头键等。

keydownkeyup(大部分)根本不给您字符,它们给您键代码。keypress是获取字符的位置(如果需要,还可以知道在事件对象的ctrlKeyaltKeyshiftKeymetaKey属性上键入该字符时修改键的状态)。这个页面进入了疯狂的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之间的区别有助于理解"字符"answers"键"。"键"是计算机键盘上的物理按钮,而"字符"是通过按下按钮键入的符号。理论上keydown和keyup事件表示按键被按下或释放,而按键事件表示正在键入的字符。这个该理论的实现并非在所有浏览器中都是一样的。

function getKeyCode(event) {
   event = event || window.event;
   return event.keyCode;
}

使用event.keyCode将为u提供keyCode;)

g.r.