我的应用程序有这样的要求,用户在文本框字段中键入一个值,并在下面的框中平行显示。但问题是我希望格式类似 1234-1234-1234 (包括破折号)。这可能吗?我尝试使用角度过滤器,但似乎无法正常工作。
答案 0 :(得分:2)
假设您正在使用Angular 1.X,我建议您为此创建一个指令,以便更好地控制该元素。
尝试以下
var app = angular.module('TestApp', []);
app.directive('inputFormat', function() {
return {
restrict: 'AE',
replace: true,
template: '<input type="text" ng-model="inputVal" placeholder="Enter a number" />',
link: function(scope, elem, attrs) {
elem.bind('keyup', function() {
var inputElm = elem.val().split("-").join(""); // remove hyphens
if (inputElm.length > 0) {
inputElm = inputElm.match(new RegExp('.{1,4}', 'g')).join("-");
}
elem.val(inputElm);
});
}
};
});
app.controller('MyCtrl', function($scope) {
$scope.search = function(element) {
console.log(element);
alert("keypressed. Value so far is: " + element.val());
};
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="TestApp">
<div ng-controller="MyCtrl">
<input-format/>
</div>
</div>
&#13;
以下是http://jsfiddle.net/anandgh/6unogzyh/
希望这有帮助