【发布时间】:2013-06-09 15:41:30
【问题描述】:
我有一个名为 valid-number 的验证指令,用于使用 $setValidity 设置表单的有效性 - 这适用于我在输入框中键入的任何文本值,该指令作为属性应用。
HTML 是
<form name="numberForm">
<input name="amount" type="text" ng-model="amount" required valid-number /></form>
指令如下
angular.module('test',[]).directive('validNumber',function(){
return{
require: "ngModel",
link: function(scope, elm, attrs, ctrl){
var regex=/\d/;
ctrl.$parsers.unshift(function(viewValue){
var floatValue = parseFloat(viewValue);
if(regex.test(viewValue)){
ctrl.$setValidity('validNumber',true);
}
else{
ctrl.$setValidity('validNumber',false);
}
return viewValue;
});
}
};
});
但是,如果第一次加载页面时输入框初始化的值无效,我也希望触发验证并将 css 设置为无效的 clsss,例如,如果我设置 $scope.amount = 'not a number' 我希望输入框已经应用了指令,但没有任何乐趣。为了使not a number 被突出显示为无效,我必须更改输入的内容,这会触发指令。
如何确保该指令适用于 <input> 的初始化对象?
完整的代码示例在这里;
【问题讨论】:
标签: javascript angularjs