Отключить функцию вырезания, копирования и вставки для текстового поля с помощью 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" />
Поле ввода содержит старые данные (исходные данные пасты).
Блокирующая паста работает во второй раз, то есть если я вставляю данные в поле ввода, данные будут присутствовать, но при второй пасте данные не будут вставляться, но старое значение данных не будет удалено.
Ответы
Ответ 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