javascript onkeypressed未提供当前文本框内容

javascript onkeypressed未提供当前文本框内容,javascript,onkeypress,Javascript,Onkeypress,我有这样一个html表单: <form id="boxy" action="layout.html" method="get" accept-charset="utf-8"> <input type="text" id="a" onkeypress="Boxy.Check(this);"> </form> Boxy.Check = function() { input = document.getElementById(this.currentS

我有这样一个html表单:

<form id="boxy" action="layout.html" method="get" accept-charset="utf-8">
  <input type="text" id="a" onkeypress="Boxy.Check(this);">
</form>
Boxy.Check = function() {
    input = document.getElementById(this.currentSelector.id).value;
    console.log("\"" + input + "\"");
};
但是,
此.value
onkeypress
之前的值

例如,如果我只是在表单中键入“A”,则
console.log()
prints”“。如果我输入“AA”,console.log将打印“A”


有没有办法获取输入的当前内容?

我认为您需要使用onkeyup

var KeyID=(window.event)?event.keyCode:e.keyCode

KeyID的值为:

> 16 (Shift)
> 17 (Ctrl)
> 18 (Alt)
> 19 (Pause)
> 37 (Left)
> 38 (Up)
> 39 (Right)
> 40 (Down)
这样,您可以检查是否按下了此键

未经测试,但这应该有效。如果有什么东西不能正常工作,请告诉我


编辑:添加了跨浏览器支持

尝试使用getElementById

<input type="text" id="a" onkeyup="Boxy.Check();">

Boxy.Check = function() {
    input = document.getElementById(
        document.getElementById('a').currentSelector.id
    ).value;
    console.log("\"" + input + "\"");
};

Check=function(){
输入=document.getElementById(
document.getElementById('a').currentSelector.id
).价值;
console.log(“\”+输入+“\”);
};

将PeeHaa的建议与unkeyup一起使用

这是有效的,但在按下任何键时都会发生,而不仅仅是在输入字符时。我认为您可能需要检查按下了哪个键以防止出现这种情况。我将更新我的帖子。这不会改变行为。我需要使用
this.currentSelector.id
,因为此代码用于多个表单。