防止退格在AngularJS中导航回来

gys*_*yss 7 javascript jquery backspace angularjs

我在AngularJS webapp中遇到了这个问题.

当用户输入带有要填写的表单并且他开始键入的页面时,如果他按下退格键并且焦点不在输入文本上,则页面将进入先前状态.

我使用jQuery 查找了这个解决方案,但它似乎不适合在AngularJS中实现这一点.

Jai*_*Jai 9

$document在角JS:

angular.module('yourModule', [])
  .controller('yourController', ['$scope', '$document', function($scope, $document) {
      $document.on('keydown', function(e){
          if(e.which === 8 && ( e.target.nodeName !== "INPUT" && e.target.nodeName !== "SELECT" ) ){ // you can add others here inside brackets.
              e.preventDefault();
          }
      });

    }
  ]);
Run Code Online (Sandbox Code Playgroud)

Plnkr演示.

您可以在演示中看到我仅使用"INPUT"nodeName,它不会阻止文本输入的退格键的默认值,但不会打开,textarea因为我们还没有在条件中处理它.


Ana*_*alo 9

我不能评论"接受的答案",但它会作为条件不正常

e.which === 8 && e.target.nodeName !== "INPUT" || e.target.nodeName !== "SELECT"
Run Code Online (Sandbox Code Playgroud)

有逻辑错误,所以你可以使用

e.which === 8 && e.target.nodeName !== "INPUT" && e.target.nodeName !== "SELECT"
Run Code Online (Sandbox Code Playgroud)

或回答编写@ThisIsMarkSantiago.