有没有办法验证从Datepicker中选择的日期,如果选择日期后用户删除了一半,例如选择日期:2013年12月20日,用户手动从输入框中删除2013,并点击保存动作。
现在,当我尝试在服务器端调试并捕获自定义解析异常时,我从bean获取的值已经为空。
你能告诉我如何在角度控制器本身上解析这个日期吗?
答案 0 :(得分:2)
您必须编写自定义验证指令: Fiddle
以下指令采用在输入字段中设置的日期字符串。如果您的日期选择器使用其他方法,则必须稍微更改此指令。
myApp.directive('isDate', 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);
}
};
});
HTML:
<form name="so">
<input type="text" ng-model="date" is-date required/>
<p ng-show="!so.$valid">Date is invalid!</p>
<p ng-show="so.$valid">Date is valid!</p>
</form>