2016-02-18 128 views
1

當我點擊提交按鈕時,表單被提交而不是驗證所需的字段。角度表單提交沒有檢查表單驗證

標記

<!DOCTYPE html> 
<html lang="en" ng-app="myApp" ng-controller="myCtrl"> 

<head> 
    <meta charset="UTF-8"> 
    <title>HTML 5</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.min.js"></script> 
</head> 
<body> 
    <div id="container"> 
     <p ng-show="msg"> {{ msg }}</p> 
     <form name="myForm" novalidate ng-submit="valid()"> 
      <p> Name <input type="text" name="name" id="" ng-model="user.name" ng-required=true></p> 
      <p ng-show="myForm.name.$invalid && myForm.name.$touched">name is required</p> 
      <p> Email <input type="email" name="email" id="" ng-model="user.email" ng-required=true> </p> 
      <p ng-show="myForm.email.$invalid && myForm.email.$touched">must be a valid email</p> 

      <input type="submit" value="submit"> 
     </form> 
    </div> 
    <script> 
     angular.module('myApp', []) 
     .controller('myCtrl', ['$scope', function($scope) { 
      $scope.valid = function() { 
      $scope.msg = "form submitted"; 
     } 
     }]); 
    </script> 
</body> 
</html> 

任何幫助將不勝感激。由於

回答

1

最短的方式來調用函數,如果形式是驗證如下決定,這將解僱了有效function只有當形式是有效的。

ng-submit="myForm.$valid && valid()" 

或者其他方法是檢查myForm對象$scope,因爲當你給name="myForm"的形式,角度確實裏面創建範圍對象,都該對象內的信息字段的信息。

$scope.valid = function(){ 
    if($scope.myForm.$valid){ 
     //form is valid 
     //do $http.post call if you wanted to submit form data 
    } 
    else { 
     alert('form is invalid');//some how notify user that form is invalid. 
    } 
} 
0

嘗試把:

$scope.valid=function(){ 
     if($scope.myForm.isValid())$scope.msg="form submitted"; 
else $scope.msg="form with errors"; 
    } 

希望它有助於

0

你可以只使用禁用的提交按鈕:

ng-disabled="boolean expression"

你的情況

這將是簡單的:

<input type="submit" value="submit" ng-disabled="!myForm.$valid">