Подтвердить что ты не робот

Отключить функцию вырезания, копирования и вставки для текстового поля с помощью AngularJs

Я хочу отключить копирование в текстовом поле, используя angularJs. Я попытался сделать это с помощью ng-paste, например:

Контроллер:

  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" />

Поле ввода содержит старые данные (исходные данные пасты).

Блокирующая паста работает во второй раз, то есть если я вставляю данные в поле ввода, данные будут присутствовать, но при второй пасте данные не будут вставляться, но старое значение данных не будет удалено.

4b9b3361

Ответ 1

Попробуйте создать директиву, которая будет прослушивать события cut, copy и paste, а затем предотвратить действие события по умолчанию.

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

Используйте, добавив атрибут в поле ввода.

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

Plunker

Вы также можете использовать директивы ng-copy, ng-cut и ng-paste и напрямую отменить событие.

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

Plunker

Ответ 2

Самый простой способ:

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

Работа здесь

Ответ 3

Try this;

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

В контроллере

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

Ответ 4

вы можете сделать это

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

вот Demo Plunker