我不喜欢Firefox的按键行为,因为在不关注特定字段的情况下按Enter键(实际上是任何键)都不会触发按键事件,它只会触发按键事件。
这可能非常混乱,因为keydown和keyup事件使用JavaScript键代码,而keypress使用ASCII码。幸运的是,13 (enter/return)对两者都是通用的。
在这种情况下FF使用按键有什么已知的原因吗?好处是什么?
一旦建立了这一点,IE8就抛出了一个愚蠢的建议,因为它不允许preventDefault要求另一个人的returnValue = false
,所以post被证明是非常有用的:
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;
}
});
我只是想知道,这样我就知道哪一个是最好的申请。
非常感谢。
发布于 2012-08-29 15:20:09
一些浏览器使用keyCode
,另一些浏览器使用which
。但对于jQuery,这是标准化的,所以您不必考虑这一点。你可以选择你喜欢的那一个。
发布于 2014-02-11 20:13:33
根据this comment的说法,jQuery可能是不可靠的,this page说:
event.which
在keydown
和keyup
上的IE<9中未定义。
对于返回字符的键,在keypress
上的Gecko (Seamonkey,Firefox)中,event.keyCode
为0。
event.charCode
仅在Internet Explorer (Mac)的keydown和keyup上支持。
Try it on JSFiddle
https://stackoverflow.com/questions/12172646
复制相似问题