2016-11-29 49 views
1

我正在应用程序,我有一个窗体,它应该显示错误输入的输入字段的验证错误消息。Angular:在提交点击ng-message验证

我的表格看起来就像这样 -

enter image description here

它应该显示错误消息,如果 -

  1. 输入栏输入错误修改
  2. Submit按钮点击无修改所需的输入字段。

它应该显示如下错误信息 -

enter image description here

要做到这一点,我使用NG-消息指令。它会帮助我在$ 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> 

谢谢!

+0

您可以用'myForm的。$ submitted' – Sravan

+0

你为什么不使用角2的形式验证技术。如果你正在使用angualr 2. https://scotch.io/tutorials/angular-2-form-validation – Harshakj89

+0

@ Harshakj89,他正在使用'angular1.5.0'而不是angular2。 – Sravan

回答

2

您可以使用$submitted的形式,

Syntax: formname.$submitted

$提交:真,如果用户提交,即使其无效的形式。

<!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>

请运行该代码段和检查。

Here is the reference

The changed plunker link of yours

+0

@ durgesh.patle,你试过了吗? – Sravan

0

更新Plunker Link

You could go with disabling submit button till your form isn't correct one 
相关问题