在表单上我们有一个使用jquery插件通过指令工作的屏蔽输入。
这很好用 - 用户看到蒙面电话价值(但只在焦点后),但我们需要有未制作的模型值而不是屏蔽(例如,如果我们输入手机(123)456-78-90 < / strong>我们必须将模型设为 1234567890 ,同时我们必须在我们的字段(123)456-78-90 中查看。
好的,我们可以将ngModel.$parsers
添加到指令中。好吧,这样可以正常工作 - 我们需要。
.directive('phoneNumber', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function($scope, element, attrs, ngModel) {
$(element).mask('(999) 999-99-99');
// view -> model
ngModel.$parsers.push(function(value) {
if (value) {
return value.replace(/[^0-9]+/g, '');
}
});
}
}
});
但是当我添加验证规则时
<input type="text" class="form-control"
ng-model="phone" name="phone"
phone-number
ng-pattern="^\d+$"
ng-maxlength="10"
ng-minlength="10"
placeholder="(999)999-99-99">
我的问题在这里:
请参阅我的代码示例中的plnkr http://plnkr.co/edit/Kalv9N2bP27v1ENAfefb?p=preview
答案 0 :(得分:0)
http://plnkr.co/edit/v9dvwaFzwOw4rkwhbMnM?p=preview
夫妻俩:
代码:
.directive('phoneNumber', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function($scope, element, attrs, ngModel) {
$scope.$apply();
$(element).mask('(999) 999-99-99');
// view -> model
ngModel.$parsers.push(function(value) {
if (value) {
return value.replace(/[^0-9]+/g, '');
}
});
}
}
});
HTML:
<input type="text" class="form-control"
ng-model="phone" name="phone" phone-number >
<span class="text-danger"
ng-show="appForm.phone.$dirty && appForm.phone.$invalid || !phone">
Incorrect phone value
</span>