2017-03-24 5 views
1

Dans mon projet AngularJs, je souhaite désactiver la touche de retour arrière pour toutes les vues. Voici une solution jQuery facile. Y at-il une solution pour cela écrit dans AngularJs?Manière AngularJS de désactiver une clé

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

Cordialement

Répondre

1

Si vous souhaitez désactiver le backspace clé pour l'ensemble du site, vous pouvez utiliser quelque chose de similaire à cela (Angularjs : disable tab key default behaviour) et appliquer la directive au document corporel à l'aide du service $document publié par @georgeawg.

Quelque chose comme ceci:

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> 
1

Vous pouvez ajouter un attribut ng-keydown à votre <input> tag:

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

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

Merci, mais je veux désactiver la clé pour toute la fenêtre –

1

Utilisez le $document Service

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

Le $document service a des méthodes qui sont un subset of jQuery called jqLite .


Comment appliquer ce code? Mon application de départ est comme angular.module("my_app", ['ngRoute']);

Mettez-le dans un bloc d'exécution:

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

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

}); 

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

peut se traduire:

(e.target.type == "input") || (e.target.type == "textarea"); 
+0

Comment appliquer ce code? Mon application de démarrage est comme angular.module ("my_app", ['ngRoute']); –

+0

Qu'en est-il de la partie '$ (e.target)'? Cela n'utilise-t-il pas jQuery? – lealceldeiro