我需要验证datepicker的日期,并限制年份(例如避免15-05-9999)。
这是我的HTML代码:
<p class="input-group">
<input type="text" name="raisedOnDate" class="form-control" ng-model="date" ng-disabled="!viewSearchEvent.raisedOnActive"
datepicker-popup="{{format}}" is-open="opened1" datepicker-options="dateOptions" date-validator required />
<span class="input-group-btn">
<button type="button" class="btn btn-default" ng-click="open($event,'on')"><i class="glyphicon glyphicon-calendar"></i></button>
</span>
<p ng-show="!searchEventsForm.$valid" style="color: red;">Date is invalid!</p>
<p ng-show="searchEventsForm.$valid" style="color: green;">Date is valid!</p>
这是在一个<form name="searchEventsForm" role="form" class="form-horizontal" novalidate>
标签内。
我创建了这个指令来验证日期类型:
app.directive('dateValidator', function() {
return {
require: 'ngModel',
link: function (scope, elem, attr, ngModel) {
function validate(value) {
var d = Date.parse(value);
// it is a date
if (isNaN(d)) { // d.valueOf() could also work
ngModel.$setValidity('valid', false);
} else {
ngModel.$setValidity('valid', true);
}
}
scope.$watch(function () {
return ngModel.$viewValue;
}, validate);
}
};
});
但是,我可以输入像25-05-999999999这样的日期,这不是想要的结果。
我成功地使它起作用了,如果是日期,则显示一条消息,说明“日期有效”,否则显示“日期无效”。
但我卡在那里了。
您有什么思路可以限制年份和字符长度并使其起作用吗?
我已经尝试过max-date
,max
以及其他方法。
如果您需要更多信息,请问我,不知道是否清楚或解释得好。
感谢您的帮助!;)