【发布时间】:2014-06-25 14:17:49
【问题描述】:
我需要验证日期选择器的日期并限制年份(例如避免 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 等。
如果您需要更多信息,请直接询问,我不知道它是否足够清楚或解释清楚。 感谢您的帮助! ;)
【问题讨论】:
-
我浏览了 Google 和 stackoverflow 并没有找到任何可以使它工作的东西。我还在寻找。
-
"angular bootstrap datepicker validation" 给了我很多结果,其中一些非常相关。
-
试过了,没用。实际上我还在尝试,修改等等。
-
尝试使用 angular-strap 日期选择器,它允许您设置最大值和最小值等
-
我去试试,我告诉你!谢谢! :D
标签: angularjs validation datepicker angular-ui-bootstrap