请有人帮助一个非常绝望和疲倦的新手。我到处寻找答案,但无济于事。
我想捕获 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.event
和 event
都指的是 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/