我有一个表单,其中有两个字段DOB
和marriage
日期。如果结婚日期是less than DOB
,我想显示red
边框。如果DOB is greater than marriage
,我可以得到。但我不能也显示红色边框。我想表单应该是无效如果我的字段无效,那么我的表单也是无效
这是我的代码http://plnkr.co/edit/neixp9ZARRAQ33gKSV9u?p=preview
$scope.changedate =function(obj){
console.log(obj.name)
if(obj && obj.name){
obj.longDate = moment(obj.name).format('x');
}
if(parseInt($scope.c['marriage date'].longDate) > parseInt($scope.c['date of birth'].longDate)){
alert('not bigger')
}
}
app.directive('viewValueChanged', function viewValueChangedDirective() {
return {
restrict: "A",
require: 'ngModel',
link: linkFn
};
function linkFn(scope, elem, attrs, ngModel) {
scope.$watch(function () {
return ngModel.$viewValue;
}, function (newValue, oldValue) {
if (newValue && newValue !== oldValue) {
scope.$parent.$eval(attrs['viewValueChanged']);
}
// in case of user entered invalid value
if(newValue === null) {
scope.$parent.$eval(attrs['viewValueChanged']);
}
});
}
});
如果结婚日期大于,我也想显示红色边框。我的表格应该无效
<form name="userForm">
<li ng-repeat="(key, x) in c">
<p class="input-group" ng-if="x.date=='date'">{{key}}
<input name="{{key}}" type="text" view-value-changed='changedate(x)' class="form-control" uib-datepicker-popup="{{format}}" ng-model="x.name" is-open="x.opened" datepicker-options="dateOptions" ng-required="true" close-text="Close" alt-input-formats="formats" />
<span id="" ng-if="userForm[key].$invalid" class="help-block" style="margin-bottom:0">Invalid date </span>
<span class="input-group-btn">
<button type="button" class="btn btn-default" ng-click="open1(x)"><i class="glyphicon glyphicon-calendar"></i></button>
</span>
</p>
<p class="input-group" ng-if="x.date=='date2'">{{key}}
<input name="{{key}}"type="text" view-value-changed='changedate(x)' class="form-control" uib-datepicker-popup="{{format}}" ng-model="x.name" is-open="x.opened" datepicker-options="dateOptions2" ng-required="true" close-text="Close" alt-input-formats="formats" />
<span id="" ng-if="userForm[key].$invalid" class="help-block" style="margin-bottom:0">Invalid date </span>
<span class="input-group-btn">
<button type="button" class="btn btn-default" ng-click="open1(x)"><i class="glyphicon glyphicon-calendar"></i></button>
</span>
</p>
</li>
</form>
根据输入字段的有效性进行应用非常简单。添加CSS规则,它将在字段无效时触发。
inupt[uib-datepicker-popup].ng-invalid {
border: 1px solid red;
}
您可以使用:ng-class
类似于:
ng-class="{'verified': userForm[key].$invalid}"
您可以将其添加到您的输入中。
然后将.verified
添加到您的css中:
input.form-control.verified {
border: 1px solid red;
}
这是plnkr