gpt4 book ai didi

javascript - 当另一个字段更改时触发字段验证

转载 作者:行者123 更新时间:2023-12-02 23:16:06 25 4
gpt4 key购买 nike

我有一个自定义验证指令,当一个字段发生更改时,该指令会被正确调用。但是,该字段是否有效还取决于另一个字段的值。如果这很重要,那么第二个字段是一个选择列表。

我想知道是否有某种方法可以在第二个表单更改时手动触发验证。也许通过使用 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 新手,我绝对建议您阅读这两篇文章:part 1 & part 2 。它们是 AngularJS 表单的概述。

最佳答案

经过大量搜索后,我发现我们只需在所需字段上调用 ​​$validate() 即可触发验证。
例如,如果您的表单名为 my_form (即在标记中,表单标记具有 name="my_form" 属性)以及您要验证的字段的名称是 date (在标记中,输入字段具有 name="date" 属性),那么按照您的建议,您可以使用 ng-change second 字段的事件,并在调用 ng-change 函数时调用 $scope.my_form.date.$validate();

关于javascript - 当另一个字段更改时触发字段验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17174627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com