请有心人帮助一个非常绝望和疲惫的新手。我已经到处搜索答案,但是没有结果。
我想捕获keyCode/charCode以测试是否按下了回车键(我一直在使用keydown,但只要能工作,我就不介意)。我已经尝试了每种可能的解决方案,在IE、Safari、Chrome和Opera中都可以正常工作,但在FireFox 3.6.25(最新版本)中却无法工作?!我知道事件肯定会触发,因为我可以从调用的函数中显示一个简单的警报框,但是声明一个变量来保存事件.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>
and so on...
As for my "testForEnter" function...
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 = window.event || event;
。最新的Firefox版本是9
,而不是3.6
。此外,请注意,如果您想要访问它,则必须将event
对象传递给内联事件处理程序中的函数。 - Felix Kling