AngularJS禁用密钥的方法

问题描述 投票:2回答:3

在我的AngularJs项目中,我想禁用所有视图的退格键。这是一个简单的jQuery解决方案。在AngularJs中有没有解决这个问题的方法?

$(document).on("keydown", function (e) {
    if (e.which === 8 && !$(e.target).is("input, textarea")) {
        e.preventDefault();
    }
});

问候

javascript angularjs keyboard backspace
3个回答
1
投票

如果要禁用整个网站的退格键,可以使用与此类似的内容(Angularjs : disable tab key default behaviour),并使用$document将指令应用于正文文档。

像这样的东西:

angular.module('app', []).directive('muteKey', ['$document', function($document) {
  return function(scope, element, attrs) {
    $document.on("keydown", function(e) {
     /*
      * you don't need the $(e.target) if you want to
      * disable the key press in any place of the project
      * and not just for inputs or textareas
      */
      if (e.which === 8) {
        e.preventDefault();
      }
    });
  };
}]);

<body mute-key>
    <!---->
</body>

3
投票

您可以在ng-keydown>标记中添加<input属性:

<input type="text" ng-keydown="checkKey($event)"/>

$scope.checkKey(keyEvent) {
    if (keyEvent.which === 13) { 
        $event.preventDefault();
    }
}

1
投票

使用$document Service

$document.on("keydown", function (e) {
    if (e.which === 8 && !$(e.target).is("input, textarea")) {
        e.preventDefault();
    }
});

$document service的方法是subset of jQuery called jqLite


如何应用此代码?我的首发应用程序就像angular.module("my_app", ['ngRoute']);

把它放在一个运行块中:

angular.module("my_app").run(function($document) {

    $document.on("keydown", function keydown Handler(e) {
        //Put handler code here
    });

});

!$(e.target).is("input, textarea")

可以翻译:

(e.target.type == "input") || (e.target.type == "textarea");
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.