Answers:
每个输入 name
的验证信息公开为房地产form
的中名scope
。
的HTML
<form name="someForm" action="/">
<input name="username" required />
<input name="password" type="password" required />
</form>
JS
$scope.someForm.username.$valid
// > false
$scope.someForm.password.$error
// > { required: true }
暴露的性质是$pristine
,$dirty
,$valid
,$invalid
,$error
。
如果出于某种原因要遍历错误:
$scope.someForm.$error
// > { required: [{$name: "username", $error: true /*...*/},
// {$name: "password", /*..*/}] }
每个错误规则将在$ error中公开。
这是与http://plnkr.co/edit/zCircDauLfeMcMUSnYaO?p=preview一起玩的pl客
用于检查哪个字段无效
console.log($scope.FORM_NAME.$error.required);
这将输出格式无效的字段数组
如果您想查看哪些字段使您的验证混乱,并且您需要jQuery来帮助您,只需在JavaScript控制台上搜索“ ng-invalid”类即可。
$('.ng-invalid');
它将列出所有由于任何原因而未能通过验证的DOM元素。
您可以遍历form.$error.pattern
。
$scope.updateProfile = function() {
var error = $scope.profileForm.$error;
angular.forEach(error.pattern, function(field){
if(field.$invalid){
var fieldName = field.$name;
....
}
});
}
当任何字段无效时,如果您尝试获取其值,它将是 undefined
。
假设您附加了一个文本输入$scope.mynum
,仅当您键入数字并且键入时,此输入才有效ABC
在其上。
如果您试图获得的价值$scope.mynum
,那将会是undefined
; 它不会返回ABC
。
(也许您知道所有这些,但是无论如何)
因此,我将使用一个数组,该数组具有已添加到范围中的所有需要验证的元素,并使用一个过滤器(例如,使用underscore.js)来检查哪些返回为 typeof
undefined
。
这些将是导致无效状态的字段。
我想在禁用的“保存”按钮工具提示中显示所有错误,因此用户将知道为什么禁用它,而不是上下滚动长格式。
if (frm) {
disable = frm.$invalid;
if (frm.$invalid && frm.$error && frm.$error.required) {
frm.$error.required.forEach(function (error) {
disableArray.push(error.$name + ' is required');
});
}
}
if (disableArray.length > 0) {
vm.disableMessage = disableArray.toString();
}
对于我的应用程序,我显示如下错误:
<ul ng-repeat="errs in myForm.$error">
<li ng-repeat="err in errs">{{err.$name}}</li></ul>
如果您想查看所有内容,则仅显示“ err”用户,如下所示:
"$validators": {},
"$asyncValidators": {},
"$parsers": [],
"$formatters": [],
"$viewChangeListeners": [],
"$untouched": true,
"$touched": false,
"$pristine": true,
"$dirty": false,
"$valid": false,
"$invalid": true,
"$error": { "required": true },
"$name": "errorfieldName",
"$options": {}
格式不正确,但是您会在此处看到这些内容...
name
输入的属性才能在$ name中看到它(当然)。AngularJS无需名称即可绑定到模型属性的事实可能导致难以诊断哪个输入无效。