event.keycode vs event.which
我忽略了Firefox的keydown行为,因为按下回车键(实际上是任何键)而不关注特定字段将不会触发keydown事件,它只会触发按键事件。
这可能非常令人困惑,因为keydown和keyup事件使用JavaScript密钥代码,而keypress使用ASCII代码。 幸运的是,13(输入/返回)对两者都很常见。
在这种情况下,使用按键的 FF有什么原因吗? 有什么好处?
一旦建立IE8就会愚蠢,因为它不允许preventDefault要求而不是returnValue = false
,来自另一个SOpost的以下片段certificate非常有用:
event.preventDefault ? event.preventDefault() : event.returnValue = false;
在搜索解决这些问题的过程中,我一直对event.keycode
和event.which
感到困惑。 即我使用类似于以下的switch语句做错了:
$("#class_Name").bind("keydown", function(event){ // do not test input if field controls used switch(event.which){ case 13: //enter key event.preventDefault ? event.preventDefault() : event.returnValue = false; break; }
以下是否更好,如果是这样,为什么?
$("body").keypress(function(event){ // stop inadvertant form submission if (event.keycode == "13"){ event.preventDefault ? event.preventDefault() : event.returnValue = false; } });
我想知道,以便我知道最适合哪种方式。
非常感谢。
有些浏览器使用keyCode
而其他浏览器则使用。 但是使用jQuery这是规范化的,所以你不必考虑这一点。 你可以选择你喜欢的那个。
根据这个评论 jQuery可能不可靠, 这个页面说:
event.which
在keydown
和keyup
IE <9中未定义。
对于返回字符的键,在keypress
上Gecko(Seamonkey,Firefox)中的event.keyCode
为0。
event.charCode
仅在Internet Explorer(Mac)的keydown和keyup上受支持。
在JSFiddle上试试吧