我需要阻止在输入字段中输入的某些符号出现。当用户在输入中键入内容时,我需要检查它是否符合某个标准,如果确实如此 - 符号应该出现在输入中(像往常一样),但如果没有 - 则不会发生任何事情。
在输入中出现输入符号之前,我能捕捉到一些事件吗?
<body ng-app="changeExample">
<script>
angular.module('changeExample', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.var = 'a';
}])
.directive('changeValue', function() {
return {
require: 'ngModel',
link: function(scope, elem, attrs, ctrl) {
elem.on('input', function() {
if(ctrl.$viewValue !== 'a') {
scope.var = '';
}
});
ctrl.$formatters.push(function(value) {
return value === 'a' ? value : '';
});
}
}
});
</script>
<div ng-controller="ExampleController">
<input type="text" ng-model="confirmed" change-value ng-change="change()"/>
</div>
</body>
答案 0 :(得分:1)
您可以使用ngChange
指令识别并删除不需要的字符。
在下面的示例中,输入字段不接受$
符号。
angular.module('changeExample', [])
.controller('ExampleController', ['$scope', function($scope) {
var FORBIDDEN_SYMBOL = '$';
$scope.change = function () {
var newChar = $scope.confirmed.slice(-1);
if (newChar === FORBIDDEN_SYMBOL) {
var inputSize = $scope.confirmed.length;
$scope.confirmed = $scope.confirmed.substring(0, inputSize -1);
}
}
}]);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="changeExample" ng-controller="ExampleController">
<input type="text" ng-model="confirmed" ng-change="change()" />
</div>
&#13;