1 つのフィールドが変更されたときに適切に呼び出されるカスタム検証ディレクティブがあります。ただし、このフィールドが有効かどうかは、別のフィールドの値にも基づいています。この 2 番目のフィールドは、それが重要な場合の選択リストです。
2番目のフォームが変更されたときに手動で検証をトリガーできる方法があるかどうか疑問に思っていました. おそらくng-change
イベントを使用することによって。このようなものを処理する適切な方法は何ですか?
これが私の指示です:
angular.module('myApp', []).
directive('validage', function () {
return {
require: 'ngModel',
link: function (scope, elem, attr, ngModel) {
function validate(value) {
var valid = true;
if ((GetDateDifference(new Date(value), new Date()) < 16 || GetDateDifference(new Date(value), new Date()) > 129)
&& scope.dep.DependantType == "Spouse") {
valid = false;
}
ngModel.$setValidity('validage', valid);
return value;
}
//For DOM -> model validation
ngModel.$parsers.unshift(function (value) {
var valid = true;
if ((GetDateDifference(new Date(value), new Date()) < 16 || GetDateDifference(new Date(value), new Date()) > 129)
&& scope.dep.DependantType == "Spouse") {
valid = false;
}
ngModel.$setValidity('validage', valid);
return value;
});
//For model -> DOM validation
ngModel.$formatters.unshift(function (value) {
var valid = true;
if ((GetDateDifference(new Date(value), new Date()) < 16 || GetDateDifference(new Date(value), new Date()) > 129)
&& scope.dep.DependantType == "Spouse") {
valid = false;
}
ngModel.$setValidity('validage', valid);
return value;
});
}
};
});
AngularJS を初めて使用する場合は、パート 1とパート 2の 2 つの記事を読むことを強くお勧めします。AngularJS フォームの概要です。