angularフォーム認証大全&angularフォームコントロール


Q:novalidate:通常のフォームのコミットをブロックする
<form class="form-horizontal" role="form" name="adduserForm" novalidate="novalidate">//            ,     novalidate  ,           。 

Q:formでデータが間違っている場合は使用できません
<button ng-disabled="adduserForm.$invalid">Save Inner</button> 

Q入力時に正しいかどうかを判断し、入力ボックススタイルにタイムリーに与える
   input.ng-invalid.ng-dirty {
	    border-color: #a94442 //    
     }
     input.ng-valid.ng-dirty {
	border-color: #3c763d;//    
     }

Q入力時にエラーメッセージを表示する
<div  class="error" ng-show="adduserForm.firstName.$dirty &&adduserForm.firstName.$invalid">//          "firstName"           div</div>
 
  
 

Q:设置不能为空

      <input type="text" class="form-control " name="firstName" ng-model="useradd.firstName" required /> 
  	<div  class="error" ng-show="adduserForm.firstName.$dirty &&adduserForm.firstName.$invalid">//          "firstName"           div
  	<span ng-show="adduserForm.firstName.$error.required"> FirstName is required</span>//           
  	</div>

Q:設定を空にすることはできません
      <input type="text" class="form-control " name="firstName" ng-model="useradd.firstName"   ng-minlength="1" ng-maxlength="200"/> 
  	<div  class="error" ng-show="adduserForm.firstName.$dirty &&adduserForm.firstName.$invalid">//          "firstName"           div
    	<span ng-show="adduserForm.firstName.$error.minlength || adduserForm.firstName.$error.maxlength"> The input value must be between 1-200</span>/   /           
  	</div>

Q:EMAIL形式認証
ここでは正規表現の使い方を示すためである.
      <input type="email" class="form-control"  name="email" ng-model="useradd.email"      ng-pattern="/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/"//> 
              <div  class="error" ng-show="adduserForm.email.$dirty &&adduserForm.email.$invalid">
 <span style="white-space:pre">	</span> <span ng-show="adduserForm.email.$error.pattern"> Email Address     </span>
  </div>

もう一つの直接判断でよい(これを推奨する)
      <input type="email" class="form-control"  name="email" ng-model="useradd.email"  required /> 
              <div  class="error" ng-show="adduserForm.email.$dirty &&adduserForm.email.$invalid">
  <span ng-show="adduserForm.email.$error"> Email Address format error</span>
  </div>

Q:ボタンの発行とリセット
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>

<div ng-app="myApp" ng-controller="formCtrl">
  <form novalidate  >
    First Name:<br>
    <input type="text" ng-model="user.firstName"><br>
    Last Name:<br>
    <input type="text" ng-model="user.lastName">
    <br><br>
    <button ng-click="reset()">RESET</button>
 <button ng-click="sub(user)">SUBMIT</button>
  </form>
</div>

<script>
var app = angular.module('myApp', []);
app.controller('formCtrl', function($scope) {
    $scope.master = {firstName:"John", lastName:"Doe"};
	  $scope.sub = function(infor) {
     alert(infor.firstName)
    };
    $scope.reset = function() {
        $scope.user = angular.copy($scope.master);
    };
    $scope.reset();
});
</script>

</body>
</html>

注意事項:
1.form上のラベルにname属性があることを確認する.2.formにaction属性は使用できません.コミットはng-submitによって処理する.各inputには必ずng-modelがあり、nameが便利に引用され、requireやng-minlengthなどが機能することが望ましい.4.novalidate:火狐、グーグルなどの標準ブラウザはHTML 5をよくサポートしています.HTML 5のinputのtype属性には既に検証機能が備わっていることが知られている.自分で検証方法を定義する場合は、ブラウザの自己検証を避けるためにnovalidateプロパティを追加します.  5.typeタイプ:HTML 5のtype属性にはemail、number、urlなどを含めることができますが、angularはまた内部でこれらの属性を書き換えているので、直接判断して使えばいいのです.これらの内容はng-pattern正則を利用する必要はありません.
フォームコントロール
Q:ラジオボタン
  <label class="checkbox-inline">
      <input type="radio" name="optionsType"  ng-model="addProj.type"  >  Date
   </label>
   <label class="checkbox-inline">
      <input type="radio" name="optionsType" ng-model="addProj.type" > Dropdown
   </label>
      <label class="checkbox-inline">
      <input type="radio" name="optionsType" ng-model="addProj.type" > Seperator
   </label>

Q:複数選択ボタン
     <input type="checkbox"   ng-model="a" ng-true-value="  "  ng-false-value="   " />

Q入力ボックス
<input type="text" ng-model="topic.title" />

Q:テキストフィールド
 <textarea  class="form-control "   ng-model="myText" ></textarea>

Q:select
<select class="form-control " ng-model="fcompanyValue"  ng-options="item.id as item.value for item in fcompany"></select> 

js:
$scope.fcompany = [ {
				id : "",
				value : 'all'
			}, {
				id : "gap china",
				value : 'gap china'
			} ];
			$scope.fcompanyValue = $scope.fcompany[0].id;