0
我有一个指令,只允许数字和格式。它把格式在适当的位置即123-123-1234角度电话号码指令允许双击后的字母
问题是,当你键入一个字母第一次它不会显示,但如果你键入相同的信第二次,它会显示即12R
这里是指令代码:
app.directive('phoneNumber', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, el, atts, ngModel) {
/* called when model is changed from the input element */
ngModel.$parsers.unshift(function(viewValue) {
var numbers = viewValue.replace(/\D/g, ''),
char = {3:'-',6:'-'};
numbers = numbers.slice(0, 10);
viewValue = '';
for (var i = 0; i < numbers.length; i++) {
viewValue += (char[i]||'') + numbers[i];
}
// set the input to formatted value
el.val(viewValue);
return viewValue;
});
/* called when model is changed outside of the input element */
ngModel.$formatters.push(function(modelValue) {
return modelValue;
});
}
}
});
这里是一个演示。输入一个数字后跟一个字母。你不会看到这封信。然后再次输入SAME字母,你会看到这封信。如果你碰到不同的字母,你将看不到它: https://plnkr.co/edit/Qp1o8wuNh0doQ4hGZR1E?p=preview
谢谢你这么多。这工作完美! – Jason