![](/img/trans.png)
[英]Angular Validation NG-message dont show required after submit and erase text
[英]Angular : ng-message validation on submit click
我正在使用只有一种表单的应用程序,并且应该在输入错误时显示输入字段的验证错误消息。
我的表格将如下所示-
如果出现以下情况,它将显示错误消息:
它应该显示以下错误消息-
为此,我使用ng-message指令。 它会帮助我在输入字段$ dirty上显示错误消息。 但是对于“提交”按钮,我找不到正确的方法。 目前,我正在使用一个标记,它将在提交点击时进行修改。 但是我对一些更好的方法感兴趣。 是否有预定义的方法可以实现这一目标?
这是我尝试过的完整示例,这也是相同的plunkr 。
<!doctype html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.0/angular.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.0/angular-messages.js"></script>
<script>
var app = angular.module('myApp', ['ngMessages']);
app.controller('myCtrl', function($scope) {
$scope.submitForm = function() {
$scope.submitted = true;
if (myForm.$valid) {
alert('Form submitted with passed validation');
}
};
});
</script>
</head>
<body ng-app="myApp" ng-controller="myCtrl">
<form name="myForm" novalidate ng-submit="submitForm()">
<label>
Enter your name:
<input type="text" name="myName" ng-model="name" ng-minlength="5" ng-maxlength="20" required />
</label>
<div ng-if="submitted || myForm.myName.$dirty" ng-messages="myForm.myName.$error" style="color:red" 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>
<br>
<br>
<label>
Enter your phone number:
<input type="number" name="myPhone" ng-model="phone" ng-maxlength="20" required />
</label>
<div ng-if="submitted || myForm.myPhone.$dirty" ng-messages="myForm.myPhone.$error" style="color:red" role="alert">
<div ng-message="required">You did not enter a field</div>
<div ng-message="maxlength">Your field is too long</div>
</div>
<br>
<br>
<button type="submit">Submit</button>
</form>
</body>
</html>
谢谢!
您可以将$submitted
用于表单,
Syntax: formname.$submitted
$ submitted:如果用户提交了表单(即使表单无效), 则为 true。
<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="style.css"> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.0/angular.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.0/angular-messages.js"></script> <script> var app = angular.module('myApp', ['ngMessages']); app.controller('myCtrl', function($scope) { $scope.submitForm = function() { if (myForm.$valid) { alert('Form submitted with passed validation'); } }; }); </script> </head> <body ng-app="myApp" ng-controller="myCtrl"> <form name="myForm" novalidate ng-submit="submitForm()"> <label> Enter your name: <input type="text" name="myName" ng-model="name" ng-minlength="5" ng-maxlength="20" required /> </label> <div ng-if="myForm.$submitted || myForm.myName.$dirty" ng-messages="myForm.myName.$error" style="color:red" 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> <br> <br> <label> Enter your phone number: <input type="number" name="myPhone" ng-model="phone" ng-maxlength="20" required /> </label> <div ng-if="myForm.$submitted || myForm.myPhone.$dirty" ng-messages="myForm.myPhone.$error" style="color:red" role="alert"> <div ng-message="required">You did not enter a field</div> <div ng-message="maxlength">Your field is too long</div> </div> <br> <br> <button type="submit">Submit</button> </form> </body> </html>
请运行此代码段并进行检查。
更新柱塞链接
You could go with disabling submit button till your form isn't correct one
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.