javascript event.keyCode 不适用于 FireFox 3.6.25 中的 keydown、keypress 或 keyup 事件

标签 javascript event-handling keyboard

请有人帮助一个非常绝望和疲倦的新手。我到处寻找答案,但无济于事。

我想捕获 keyCode/charCode 以测试是否已按下回车键(我一直在使用 keydown 但只要我能正常工作就不会大惊小怪)。我已经尝试了所有可能的解决方案,它在 IE、Safari、Chrome 和 Opera 中运行良好,但在 FireFox 3.6.25(最新版)中却不行?!我知道事件肯定会触发,因为我可以从我调用的函数中显示一个简单的警告框,但至于声明一个变量来保存 event.keyCode 的内容,那完全是另一回事!

我的表单代码基本上是...

<form method="post" name="giftaidform" onsubmit="javascript:return validateForm();" action="../scripts/form-to-email.php">
<table width="500" border="0" align="center" cellpadding="5" cellspacing="0">
  <tr>
    <td width="180" align="right">Forename:</td>
    <td align="left"><input name="forename" type="text" size="30" maxlength="30" onfocus="javascript:setUnchecked(this);" onkeydown="javascript:testForEnter(this);" onblur="javascript:isValidName(this);"></td>
  </tr>

等等……

至于我的“testForEnter”函数...

function testForEnter(obj) {
// store code of key that was pressed
var keyCode = obj.keyCode;
alert(keyCode);
// if the enter key was pressed then prevent default action
if (keyCode == 13) {
    if(event.preventDefault) event.preventDefault();
    event.returnValue = false;
}
 }

我已经尝试过各种其他公式,包括 obj.charCode 和下面的内容?!

function checkKey(evt) {
  var keyID = (window.event) ? window.event.keyCode : event.which;
  alert(keyID);
}

在 FireFox 中没有任何效果!

最佳答案

没有任何效果,因为您将参数命名为 evt 而不是 event。在您的代码中, window.eventevent 都指的是 window.event,它在 Firefox 中不存在。

您应该首先规范化事件,例如使用

var event = evt || window.event;

或将参数从 evt 重命名为 event(然后删除上面的 var)。

另请注意,当您从内联事件处理程序调用函数时,如果要访问它,则必须将事件对象传递给它。

关于javascript event.keyCode 不适用于 FireFox 3.6.25 中的 keydown、keypress 或 keyup 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8610663/

相关文章:

iOS 键盘扩展 : able to display key tap beyond keyboard field?

javascript - 如何使用express(NodeJS)将大量文件从服务器发送到客户端

javascript - 如何动态地将 id 提供给我的输入字段,就像我在 vue js html 中的音译 id 一样?

jquery - 使用 .off 删除事件处理程序

c# - 您是否需要 "unwire"ASP.NET webforms 中的事件处理程序

java - 根据 Android 中的设备区域设置禁用逗号或点

javascript - 如何在任何级别递归地更改 JS 对象/JSON 值?

javascript - typescript -在多维对象中查找匹配的键和路径

javascript - AngularJS:防止执行 ng-click

java - 如何在不更改默认选择的输入法服务的情况下创建附加输入法服务?