JavaScript 键码在 Firefox 中不起作用



我正在使用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();
                }
}

您能否建议一种在Firefox中实现此功能的方法。

在 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 = 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();
    }
}

https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode

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

最新更新