我正在尝试以下代码,以便在输入框内按下 空格键
时触发一个js方法。
<input id="j1" />
$('#j1').keypress (function (event){
alert(event.keycode)
});
在Firefox中,只有在按下enter
键时才返回正确的值,其他键返回的值始终只是 0 。 在IE / Chrome中,这个功能完美运作。
我正在尝试以下代码,以便在输入框内按下 空格键
时触发一个js方法。
<input id="j1" />
$('#j1').keypress (function (event){
alert(event.keycode)
});
在Firefox中,只有在按下enter
键时才返回正确的值,其他键返回的值始终只是 0 。 在IE / Chrome中,这个功能完美运作。
在非IE浏览器中,你需要使用keypress
事件的which
或charCode
属性,而不是keyCode
属性。 keypress
事件用于检测输入的字符,而keyup
和keydown
用于检测物理按键(在这些事件中,keyCode
在所有主要浏览器中都有效)。
var charCode = (typeof event.which == "number") ? event.which : event.keyCode;
然而,jQuery使用类似以下代码的方式来规范化keypress事件的which
属性,因此在jQuery中您只需要:
var charCode = event.which;
想要了解有关键事件的更多细节,请参阅http://unixpapa.com/js/key.html。
key
的地方,例如: event.keycode
和 event.which
。
更多信息请参见此帖子:
编辑
最后找到了我的旧函数,这是我使用的实际代码:
evt = (evt) ? evt : event;
var charCode = evt.which || evt.charCode || evt.keyCode || 0;
keypress事件的值在不同的浏览器中是不同的。IE和Google Chrome设置KeyboardEvent.charCode的值。如果按下的键是可打印的键,Gecko将其设置为0,否则将其设置为与keydown或keyup事件相同的keyCode。
因此,从Firefox的角度来看,它实际上返回了正确的值。请参见文档。
keyCode
、which
、keyIdentifier
和charCode
已被弃用。
该功能已从Web标准中删除。尽管某些浏览器可能仍然支持它,但正在逐步停止使用。避免使用它,并在可能的情况下更新现有代码;
keyIdentifier
在IE和Firefox中没有支持,已从Opera和Chrome中删除。
使用charCode
是非标准的。
key
属性代替。readonly attribute DOMString key
key
值与keyCode
或which
属性不同,因为它包含键的名称而不是其代码。如果您的程序需要字符代码,则可以使用charCodeAt()
。
对于单个可打印字符,您可以使用charCodeAt()
,如果您正在处理其值包含多个字符的键,例如ArrowUp,则有可能:您正在测试特殊键并相应地采取行动。因此,请尝试实现一个包含键值及其相应代码的表格charCodeArr["ArrowUp"]=38
,charCodeArr["Enter"]=13
,charCodeArr[Escape]=27
等等,请参见键值及其相应代码。if(e.key!=undefined){
var characterCode = charCodeArr[e.key] || e.key.charCodeAt(0);
}else{
/* As @Leonid suggeted */
var characterCode = e.which || e.charCode || e.keyCode || 0;
}
/* ... code making use of characterCode variable */
code
属性:readonly attribute DOMString code
如果event.keyCode
没有返回正确的值,那么对于Firefox浏览器,您可以使用event.charCode
var keyValue = event.charCode || event.keyCode;
evt.which || evt.charCode || evt.keyCode || 0
的翻译是:事件对象的按键值,如果没有则返回0。 - LeonidcharCode
。支持charCode
的每个浏览器也都支持which
,而一些浏览器(如Opera)只支持which
。 - Tim Down