Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript键码在Firefox中不起作用_Javascript_Angularjs_Firefox - Fatal编程技术网

JavaScript键码在Firefox中不起作用

JavaScript键码在Firefox中不起作用,javascript,angularjs,firefox,Javascript,Angularjs,Firefox,我使用的是JavaScript键码,它们不是在Firefox中工作,而是在Chrome和IE中工作。我已经调试了Firefox前端的代码,我得到的键码是0 这是我的代码: $scope.Validate = function(event,indexVal){ if ((event.keyCode > 64 && event.keyCode < 91)|| (event.keyCode > 159 && event.keyCode <

我使用的是JavaScript键码,它们不是在Firefox中工作,而是在Chrome和IE中工作。我已经调试了Firefox前端的代码,我得到的键码是
0

这是我的代码:

$scope.Validate = function(event,indexVal){
    if ((event.keyCode > 64 && event.keyCode < 91)|| (event.keyCode > 159 && event.keyCode < 166) || (event.keyCode > 96 && event.keyCode < 123) || (event.keyCode == 165) ||(event.keyCode == 32)
                        || (event.keyCode == 164) || (event.keyCode == 130) || (event.keyCode == 181) || (event.keyCode == 144) || (event.keyCode == 214) ||
                        (event.keyCode == 224) ||(event.keyCode == 233)) {
                }else{
                    event.preventDefault();
                }
}
$scope.Validate=函数(事件,indexVal){
如果((event.keyCode>64&&event.keyCode<91)|(event.keyCode>159&&event.keyCode<166)|(event.keyCode>96&&event.keyCode<123)|(event.keyCode==165)|(event.keyCode==32)
||(event.keyCode==164)| |(event.keyCode==130)| |(event.keyCode==181)| |(event.keyCode==144)| |(event.keyCode==214)||
(event.keyCode==224)| |(event.keyCode==233)){
}否则{
event.preventDefault();
}
}

你能推荐一种在Firefox中实现这一功能的方法吗?

它可以工作,但略有不同

$scope.Validate = function (event, indexVal) {
    var code = event.which || event.keyCode;

    if (!(
            (code > 64 && code < 91)
            || (code > 159 && code < 166) 
            || (code > 96 && code < 123) 
            || ~[165, 32, 164, 130, 181, 144, 214, 224, 233].indexOf(code)
    )) {
        event.preventDefault();
    }
}
$scope.Validate=函数(事件,indexVal){
var代码=event.which | | event.keyCode;
如果((
(代码>64&&代码<91)
||(代码>159和代码<166)
||(代码>96&&代码<123)
||[165,32,164,130,181,144,214,224,233].indexOf(代码)
)) {
event.preventDefault();
}
}

已弃用
KeyboardEvent.keyCode
此功能已从Web标准中删除。尽管某些浏览器可能仍然支持它,但它正在被删除。避免使用,并尽可能更新现有代码;请参阅本页底部的兼容性表以指导您的决策。请注意,此功能可能随时停止工作


在Firefox中,
event.keyCode
并不总是有效,这取决于绑定事件。您必须使用
event.which
。有关更多信息,请参阅此

$scope.Validate = function(event,indexVal) {
  var key = event.keyCode || event.which;
  if ((key > 64 && key < 91) || 
    (key > 159 && key < 166) || 
    (key > 96 && key < 123) || 
    (key == 165) ||
    (key == 32) ||
    (key == 37) ||
    (key == 39) ||
    (key == 164) || 
    (key == 130) || 
    (key == 181) || 
    (key == 144) || 
    (key == 214) ||
    (key == 224) ||
    (key == 233)
  ) {
    // Do something.
  } else {
    event.preventDefault();
  }
}
$scope.Validate=函数(事件,indexVal){
var key=event.keyCode | | event.which;
如果((键>64&&键<91)|
(钥匙>159和钥匙<166)|
(键>96和键<123)|
(键==165)||
(键==32)||
(键==37)||
(键==39)||
(键==164)|
(键==130)|
(键==181)|
(键==144)|
(键==214)||
(键==224)||
(键==233)
) {
//做点什么。
}否则{
event.preventDefault();
}
}

var keyCode=event.which | | event.keyCode
@ArunPJohny您能再解释一下吗please@JaromandaX是的,它在nice的两个可能的副本中工作让我尝试一次$scope.Validate=函数(event,indexVal){}我需要将此事件和indexVal传递给此函数吗
事件
就足够了;但是,可能出于其他验证目的,也将使用
indexVal
,仅供参考:
KeyboardEvent。它在MDN上也标记为@Murali,它不会有任何区别。。。但我已经更新了答案。如前所述,如果未使用
indexVal
,只需将其从作用域中删除即可,但如何允许Mozilla中的左箭头键和右箭头键的键代码分别为37到40(左、上、右、下)。因此,您必须将它们添加到您的条件中。在chrome中,默认情况下接受。但即使我保持37,它也不允许使用箭头。它就像ASCII不是键码一样工作!键码是键盘上键的数字表示形式,而ASCII是特定字符的数字表示形式。