【发布时间】:2021-01-08 12:50:31
【问题描述】:
我有一个用 Angular 1.5.3 编写的应用程序。
这是我想做的:
我有一个包含 2 种日期输入类型的用户表单。我需要在我的表单中添加一些自定义验证。当表单上的“到期日期”大于表单上的“生效日期”时,我想向用户显示错误消息。
我相信我可以使用自定义指令和 ng-messages 来做到这一点。
这是我的代码 sn-p:
<form name="form.mainForm">
<div>
<span>Effective Date: </span>
<input required type="date" name="effectiveDate" ng-model="effectiveDate" />
<div>
<span>Expiry Date: </span>
<input
type="date"
name="expiryDate"
ng-model="expiryDate"
date-greater-than="{{ effectiveDate }}" />
</div>
</div>
</form>
app.directive('dateGreaterThan', function () {
return {
restrict: 'A',
require: 'ngModel',
scope: false,
link: function (scope, elm, attrs, ctrl) {
console.log(' here we are ');
function isValidDateRange(expiryDate, effectiveDate) {
console.log(expiryDate, effectiveDate);
if (effectiveDate == null || expiryDate == null ) {
return true;
}
return effectiveDate > expiryDate;
}
function validateDateRange(inputValue) {
var expiryDate = inputValue;
var effectiveDate = scope.effectiveDate;
var isValid = isValidDateRange(expiryDate, effectiveDate);
console.log("isValid: ", isValid);
ctrl.$setValidity('dateGreaterThan', isValid);
return inputValue;
}
ctrl.$parsers.unshift(validateDateRange);
ctrl.$formatters.push(validateDateRange);
attrs.$observe('dateGreaterThan', function () {
validateDateRange(ctrl.$viewValue);
});
}
};
我试图在这里解决问题,但我的指令无法正常工作。它似乎没有计算日期的变化,也没有与 ng-messages 集成。
【问题讨论】:
标签: javascript angularjs date using-directives