javascript事件.在FireFox 3.6.25中,keyCode不能处理keydown、keypress或ke
javascript event.keyCode doesn't work on keydown, keypress or keyup events in FireFox 3.6.25
请帮助一个非常绝望和疲惫的新手。我已到处寻找答案,但一无所获。
我想捕获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>
等等…
至于我的"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);
}
什么都不能用!
没有任何作用,因为您将参数命名为evt
而不是event
。在您的代码中,window.event
和event
都引用了Firefox中不存在的window.event
。
您应该首先规范化事件,例如使用
var event = evt || window.event;
或将参数从evt
重命名为event
(然后删除上面的var
)。
还请注意,当您从内联事件处理程序调用函数时,如果您想访问它,则必须将事件对象传递给它。
这是我现在拥有的代码,它在所有五个主要浏览器中都可以完全运行:
我现在按如下方式调用函数:
<input name="forename" type="text" size="30" maxlength="30" onkeydown="testForEnter(this,event);" onblur="isValidName(this);">
我的功能如下:
// testForEnter() disables the enter keypress on all form objects except for submit button
// this function works in IE, chrome, safari, opera and firefox
function testForEnter(obj,evt) {
var keyCode = evt.keyCode;
var objType = obj.type;
if ((keyCode == 13) && (objType != "submit")) {
evt.returnValue = false;
evt.stopPropagation(); // this line added for firefox
if(evt.preventDefault) evt.preventDefault();
}
} //end of testForEnter()
希望这对其他人有帮助!
尝试使用
var keycode = evt.charCode;
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- keyup事件处理程序更改焦点不适用于快速键入
- 如何使用jquery处理php循环通过元素
- angular.js没有'无法在PhoneGap中处理视图标记
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 提示使用服务器端事件处理程序激活JavaScript
- 使用特定键在keydown时触发事件
- javascript:如何在antlr生成的Lexer中进行错误处理
- 如何编写一个具有公共标头的批处理
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 如何处理node.js节点mongodb中的连接和查询队列
- 使用regex的jquery keydown绑定不会验证撇号和句点
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- Firefox赢得了't在keydown处理程序中设置input.value..但它在调试时起作用
- jquery:$(input).keydown无法在单选按钮上设置处理程序,同样的代码也适用于文本
- 在输入框上进行模糊处理后,将不再看到keydown事件
- Keydown事件未被事件处理程序拾取
- javascript事件.在FireFox 3.6.25中,keyCode不能处理keydown、keypress或ke
- 如何在asp.net中处理KeyPress或KeyDown事件
- 在keydown事件中处理某些键时遵从默认行为