验证 2 angular 个表单字段没有相同的内容
Validate that 2 angular Form fields do not have the same content
我有一个 angular 表单,由两个字段位置 A 和位置 B 组成。
我想要实现的是一个比较两个字段并相应地验证的指令,只要字段具有相同的位置,就适当地设置有效或无效字段的样式。
我曾尝试使用 ng-change = validateLocations()
插入逻辑,但根据我的研究,指令更适合 above.The 等场景,同样的逻辑也可以应用于验证 from
和 to
日期选择器上的日期。
我试过这样的事情:
.directive("locationANotEqual", function () {
return {
restrict: "A",
require: "ngModel",
link: function (scope, element, attr, ctrl) {
ctrl.$validators.locationNotEqual= function (modelvalue) {
if (modelvalue !== scope.form.locationB) {
return true;
} else {
return false
}
}
}
}
});
这方面我把属性放在了locationA输入栏上。
我想要的是能够在一个指令中而不是 2 个指令中合并对两个字段的检查。
向您的指令添加另一个参数并与该值而不是 scope.form.locationB
进行比较。对该值调用 attributes.$observe
进行更改,以便可以将指令的模型标记为 valid/invalid.
data-ng-model-options="{allowInvalid: true}"
用于当值匹配时,模型仍然设置。
app.directive('validateNotEqual', [
function() {
return {
restrict: 'AE',
require: '^ngModel',
link: function(scope, element, attributes, ngModelCtrl) {
if (!ngModelCtrl) {
return;
}
var errorKey = 'notEqual';
ngModelCtrl.$validators[errorKey] = function(value) {
return value !== attributes.validateNotEqual;
};
attributes.$observe('validateNotEqual', function(value) {
ngModelCtrl.$setValidity(
errorKey,
value !== ngModelCtrl.$modelValue);
});
}
};
}
]);
见plunker。
我有一个 angular 表单,由两个字段位置 A 和位置 B 组成。 我想要实现的是一个比较两个字段并相应地验证的指令,只要字段具有相同的位置,就适当地设置有效或无效字段的样式。
我曾尝试使用 ng-change = validateLocations()
插入逻辑,但根据我的研究,指令更适合 above.The 等场景,同样的逻辑也可以应用于验证 from
和 to
日期选择器上的日期。
我试过这样的事情:
.directive("locationANotEqual", function () {
return {
restrict: "A",
require: "ngModel",
link: function (scope, element, attr, ctrl) {
ctrl.$validators.locationNotEqual= function (modelvalue) {
if (modelvalue !== scope.form.locationB) {
return true;
} else {
return false
}
}
}
}
});
这方面我把属性放在了locationA输入栏上。 我想要的是能够在一个指令中而不是 2 个指令中合并对两个字段的检查。
向您的指令添加另一个参数并与该值而不是 scope.form.locationB
进行比较。对该值调用 attributes.$observe
进行更改,以便可以将指令的模型标记为 valid/invalid.
data-ng-model-options="{allowInvalid: true}"
用于当值匹配时,模型仍然设置。
app.directive('validateNotEqual', [
function() {
return {
restrict: 'AE',
require: '^ngModel',
link: function(scope, element, attributes, ngModelCtrl) {
if (!ngModelCtrl) {
return;
}
var errorKey = 'notEqual';
ngModelCtrl.$validators[errorKey] = function(value) {
return value !== attributes.validateNotEqual;
};
attributes.$observe('validateNotEqual', function(value) {
ngModelCtrl.$setValidity(
errorKey,
value !== ngModelCtrl.$modelValue);
});
}
};
}
]);
见plunker。