web-dev-qa-db-fra.com

Désactiver les fonctions Couper, Copier et Coller pour les zones de texte utilisant AngularJs

Je veux désactiver le copier/coller dans une zone de texte à l'aide d'angularJs. J'ai essayé de le faire avec ng-paste, comme ceci:

Manette:

  angular.module('inputExample', [])
  .controller('ExampleController', ['$scope', function($scope) {

  $scope.val = '1';
  $scope.past = function() {

    console.log("d");
    $scope.val ="  ";

  }
}]);

HTML:

<input ng-paste="past()" ng-model="val" ng-pattern="/^\d+$/" name="anim" class="my-input" />

La zone de saisie contient des données anciennes (les données de collage initiales). 

Le blocage de la pâte fonctionne la deuxième fois, c’est-à-dire que si je colle les données dans la zone de saisie, les données seront présentes, mais lors du second collage, les données ne seront pas collées, mais l’ancienne valeur des données n’est pas supprimée.

13
Marimuthu

Essayez de créer une directive qui écoute les événements cut, copy et paste, puis empêchez l’action d’événement par défaut.

app.directive('stopccp', function(){
    return {
        scope: {},
        link:function(scope,element){
            element.on('cut copy paste', function (event) {
              event.preventDefault();
            });
        }
    };
});

Utilisez en ajoutant l'attribut à la zone de saisie.

<input stopccp ng-model="val" />

Plunker

Vous pouvez également utiliser les directives ng-copy, ng-cut et ng-paste et annuler directement l'événement.

<input ng-cut="$event.preventDefault()" ng-copy="$event.preventDefault()" ng-paste="$event.preventDefault()" ng-model="val" />

Plunker

29
quantumwannabe

Le moyen le plus simple:

<input ng-paste="$event.preventDefault();" placeholder='You cannot past here'>

Travailler ici

17
Ismaestro
Try this;

 <input type="text" ng-paste="paste($event)" ng-model="name"/>

Dans le contrôleur

 app.controller('MainCtrl', function($scope) {
    $scope.name = 'World';
    $scope.paste = function(e){
       e.preventDefault();
       return false
    }
 });
2
Mehmet Otkun

tu peux faire comme ça

app.controller('MainCtrl', function($scope, $timeout) {....
.......
$scope.past = function() {
   $timeout(function() {
      $scope.val = " ";
   }, 0);
}...

voici le Demo Plunker

0
K.Toress