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.
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" />
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" />
Le moyen le plus simple:
<input ng-paste="$event.preventDefault();" placeholder='You cannot past here'>
Travailler ici
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
}
});
tu peux faire comme ça
app.controller('MainCtrl', function($scope, $timeout) {....
.......
$scope.past = function() {
$timeout(function() {
$scope.val = " ";
}, 0);
}...
voici le Demo Plunker