gpt4 book ai didi

javascript - 简洁的 Angular 表单验证

转载 作者:行者123 更新时间:2023-11-30 15:59:18 25 4
gpt4 key购买 nike

我正在使用 Angular 1.4.7 并希望在提交表单时(而不是在字段内容更改时)显示字段验证错误。我目前的做法是这样的:

<!DOCTYPE html>
<html ng-app="exampleApp">
<head>
<script src="angular.js"></script>
<link href="bootstrap.css" rel="stylesheet"/>
<script>
angular.module("exampleApp", [])
.controller("defaultCtrl", function ($scope) {
$scope.addUser = function (userDetails) {
if (myForm.$valid) {
// send form data to server, or whatever....
} else {
$scope.showValidation = true;
}
};

$scope.getError = function (error) {
if (angular.isDefined(error)) {
if (error.required) {
return "Please enter a value";
} else if (error.email) {
return "Please enter a valid email address";
}
}
}
});
</script>
<style>
form.validate .ng-invalid-required.ng-dirty {
background-color: lightpink;
}

form.validate .ng-invalid-email.ng-dirty {
background-color: lightgoldenrodyellow;
}

div.error {
color: red; font-weight: bold;
}
</style>
</head>
<body>
<div id="todoPanel" class="panel" ng-controller="defaultCtrl">
<form name="myForm" novalidate ng-submit="addUser(newUser)"
ng-class="showValidation ? 'validate' : ''">
<div class="well">
<div class="form-group">
<label>Email:</label>
<input name="userEmail" type="email" class="form-control"
required ng-model="newUser.email">
<div class="error" ng-show="showValidation">
{{getError(myForm.userEmail.$error)}}
</div>
</div>
<button type="submit" class="btn btn-primary btn-block">OK</button>
</div>
</form>
</div>
</body>
</html>

请注意,$scope.showValidation 用于确保在提交表单之前不会显示验证消息。 $scope.getError 用于减少确定要显示哪条消息所需的标记量(尽管在此示例中,表单只有一个字段)。

我觉得一定有更好的方法,当一个表单有很多字段时,显示适当错误消息所需的代码会变得非常冗长,并且有几种不同的方法可以使一个字段无效。有没有办法简化上面的代码或者让它更简洁?

最佳答案

稍微好一点的方法是使用 ng-messages

From the docs:

<div ng-messages="myForm.myName.$error" style="color:maroon" role="alert">
<div ng-message="required">You did not enter a field</div>
<div ng-message="minlength">Your field is too short</div>
<div ng-message="maxlength">Your field is too long</div>
</div>

另一种方法是通过 JavaScript 完全控制您的 form。有一个不错的图书馆叫formly这会为您减少所有样板代码。

关于javascript - 简洁的 Angular 表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38010162/

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