Angularjs 在服务器端验证多个字段
我有一个表单,需要在服务器端进行验证。后端使用一个请求验证多个字段。 我尝试在响应后添加验证消息。下面是一个例子: 这是我的html代码:Angularjs 在服务器端验证多个字段,angularjs,validation,Angularjs,Validation,我有一个表单,需要在服务器端进行验证。后端使用一个请求验证多个字段。 我尝试在响应后添加验证消息。下面是一个例子: 这是我的html代码: <div ng-app="MyApp"> <div ng-controller="MyController"> <form name="MyForm" novalidate ng-submit="send()"> <div> <label>Email</
<div ng-app="MyApp">
<div ng-controller="MyController">
<form name="MyForm" novalidate ng-submit="send()">
<div>
<label>Email</label>
<input type="email" name="email" ng-model="user.email" required>
<div ng-show="MyForm.email.$invalid">error message</div>
</div>
<input type="submit" ng-disabled="MyForm.$invalid">
<pre>{{ MyForm.email.$error | json }}</pre>
</form>
</div>
</div>
但我需要在值更改时删除错误。如何使用Angular实现它
例如:只要用户使用
ng change
更改输入,就可以调用检查函数。因此,它将检查电子邮件当前是否无效,如果无效,它将再次设置为有效
$scope.check=函数(){
if($scope.MyForm.email.$valid==false){
$scope.MyForm.email.$setValidity('server-side-error',true);
}
}
您可以在此找到一个有效的版本让我知道我的答案是否适合您,或者您是否还有任何疑问。:)这是可行的,但我还有一个问题。错误可能是动态的,我不是为每个输入编写检查函数,而是编写一个通用函数来处理所有服务器端错误。可能吗?您可以在
$scope.MyForm.$setValidity
上设置有效性。然后您可以使用$scope.MyForm.$setValidity('email-in-use-error',false)
。唯一的问题是你无法知道什么输入无效。
var myApp = angular.module('MyApp', []);
myApp.controller("MyController", ['$scope', '$timeout', '$log', function($scope, $timeout, $log) {
$scope.user = { "email" : "" }
$scope.send = function() {
$timeout(function() {
$log.log("Response from server. Multiple fields validation.");
$scope.MyForm["email"].$setValidity("server-side-error", false, $scope.MyForm)
// here I want to add something what listen once on $scope.MyForm["email"] changed
}, 1000);
};
}]);
<input type="email" name="email" ng-model="user.email" ng-change="check()" required>
$scope.check = function(){
if ($scope.MyForm.email.$valid == false){
$scope.MyForm.email.$setValidity('server-side-error', true);
}
}