javascript onkeypressed 不给出当前文本框内容

发布于 2024-10-09 15:31:33 字数 561 浏览 6 评论 0原文

我有一个像这样的html表单:

<form id="boxy" action="layout.html" method="get" accept-charset="utf-8">
  <input type="text" id="a" onkeypress="Boxy.Check(this);">
</form>

像这样调用javascript:

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

但是,this.valueonkeypress之前的前一个值。

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

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

I have an html form like this:

<form id="boxy" action="layout.html" method="get" accept-charset="utf-8">
  <input type="text" id="a" onkeypress="Boxy.Check(this);">
</form>

Invoking javascript like this:

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

However, this.value is the previous value before onkeypress.

For example, if I just type "A" into the form, console.log() prints "". And if I type "AA", console.log prints "A".

Is there a way to get the current content of the input?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寻梦旅人 2024-10-16 15:31:33

我认为你需要使用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)

这样您可以检查是否按下了该键。

未经测试,但这应该有效。如果某些功能无法正常工作,请告诉我。

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

I think you need to use onkeyup.

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

values for KeyID are:

> 16 (Shift)
> 17 (Ctrl)
> 18 (Alt)
> 19 (Pause)
> 37 (Left)
> 38 (Up)
> 39 (Right)
> 40 (Down)

This way you can check whether such a key is pressed.

Untested but this should work. Please let me know if something doesn't work as it should.

EDIT: Added cross-browser support

夏九 2024-10-16 15:31:33

尝试使用 getElementById

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

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

并使用 PeeHaa 的建议和 unkeyup

Try using getElementById

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

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

using PeeHaa's advice with unkeyup

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文