javascript - 使用javascript如何记录键盘事件?

标签 javascript dom keyboard-events

<input type="text"></input>

<script>
var a = document.getElementsByTagName('input')[0];
a.onkeypress = function(evt) {
  this.evt = evt || event;
var b = String.fromCharCode(evt.keyCode);
 while(forEach(evt) {
     alert("You pressed " + b);
   }
};
</script>

这似乎不起作用。当用户按下某个键时,它应该始终提醒该键。 这里的浏览器是Chrome。

最佳答案

它不起作用,因为您正在调用一个未定义的函数 (forEach),此处:

while(forEach(evt) {
//    ^

如果您查看 JavaScript 控制台,您会看到与此相关的错误。

此外,您不想分配给 this 上的 evt 属性:

this.evt = evt || event; // <== Don't do this

只需使用参数:

evt = evt || event;

如果您要单独提醒每个按键,则没有理由循环。

此外,input 元素没有结束标记。它应该只是:

<input type="text">

或(在 XHTML 中,也可以在 HTML 中):

<input type="text"/>

:

<input type="text"></input>

最后,请注意,某些浏览器使用 which 作为键码,其他浏览器使用 keyCode。您可以使用 || 来使用浏览器提供的任何内容:

String.fromCharCode(evt.which || evt.keyCode)

这是一个最小更新:Live Copy | Live Source

<input type="text">
<script>
var a = document.getElementsByTagName('input')[0];
a.onkeypress = function(evt) {
  evt = evt || event;
  alert("You pressed " + String.fromCharCode(evt.which || evt.keyCode));
};
</script>

关于javascript - 使用javascript如何记录键盘事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16831788/

相关文章:

javascript - Document.cookie 的 setter 在 Web 浏览器中是异步的吗?

javascript - rails 4 : select DOM element with dynamically generated id

python - Tkinter 输入框,不允许一次输入和显示一个字符串

python - 限制/阻止 Python 中输入的按键并防止在下一个提示中出现键盘按键

iOS 返回键 - 登录操作

javascript - jQuery 菜单没有完全隐藏

javascript - 我可以使用元素的数据属性的值来声明变量吗?

javascript - Get请求返回html代码而不是真实数据

javascript - 支持非 Javascript 用户 - JQuery Slide

GWT 中的 jquery read() 等效项