アングラーはフォーム検証と提出機能を実現する。
本例は、Anglarフレームにより、簡単なフォーム検証を行う。
一、html構造
1、bootstrapの助けを借りて簡単なフォームを作成しました。
コードの主要部分は以下の通りです。
1)、問題:
」データをどのように結合するか――双方向結合
」検証フォーム――正規表現
」エラーメッセージを表示します。
」全体のフォームの検証
」検証されていないフォームの提出を避ける
」複数回の提出を防ぐ
2)常用命令
」コマンド:
ng-model、ng-required、ng-pattern、ng-maxlength、ng-minlength、ng-change
」スタイル:
ng-valid、ng-invalid、ng-presine、ng-dirty
』form制御変数
form Name.input FieldName.$error:フィールドエラー情報
form Name.input FieldName.$dirty:フィールドは変更されますか?
form Name.input FieldName.$presine:フィールドは初期状態ですか?
form Name.input FieldName.$valid:フィールドは有効ですか?
form Name.input FieldName.$invalid:フィールドは無効ですか?
二、機能実現
2.1ユーザ名認証
ユーザーがユーザー名フィールドを入力して検証するのは主に長さの検証と必要かどうかです。
1、ng-modelはフォームデータをバインドして、anglarの検証アプリを使用する。
2、ng-minlength、ng-maxlength所定のフィールドの長さ、required規定のフィールドは必ず記入します。
3、エラーメッセージ情報はformName.inputFieldName.$error.minlength/maxlengthによって表示するかどうかを決定します。入力が不正である場合、$errorに対応するエラー情報はtrueとなります。
以下のとおりです
パスワードの確認検証は、2回入力したパスワードが一致していることを保証し、確認パスワードが入力されていない前に検証しないこと。
1、バインディングデータng-model=data.pwdConfirm(すべてのフォームデータはdataオブジェクトに保存されます)
2、data.pwdConfirmを判断!==data.passwordは二つのパスワードが一致するかどうかを確認します。
3、form Name.input Field.$dirtyでこの項目が記入されたかどうか確認します。
メールアドレスの検証は主にメールボックスのフォーマットが正しいかどうか、フィールドの長さを確認します。
1、H 5でtype属性値emailを追加してください。
2、ng-pattern命令によりメール検証の正則を定義する。
3、メールアドレス検証常用正規表現:^([a-zA-Z 0-9_-])+@([[a-zA-Z 0-9_-)+(.[a-zA-Z 0-9_-)+
4、myForm.email.error.patternを通じてメールアドレスのフォーマットが正しいかどうかを検証する。
シングルチェックボックスは主にデータバインディング問題とチェックボックスのデータレンダリングを決定します。
1、データをdataオブジェクトの属性として結びつける
2、複数選択のオプション値をng-repeatで巡回します。
3、value値を設定して提出する時に値を区分する
1、都市データの定義:各都市の対象はid、parent、name属性、idは各都市の省に特有で、parentは父級の省または都市によって決められます。
2、都市データを、ng-optionsコマンドで遍歴する
2.5.1都市データモデル
scope.ciiesでデータモデルを定義します。
ng-optionsコマンドとng-modelコマンドでデータを巡回し、デフォルト値を設定します。
1、ng-options="obj.name for obj in datas"のよくある使い方は、Obj.id as obj.nameを通じてoptionタグを設定するvalue値がidで、内容はnameです。
2、ng-modelはselectのデフォルト値を設定するために使用できます。
2.5.3フィルターを定義し、省、都市などをフィルタリングする。
1、上述のようにcityFilterを定義することによって、一つのparentがパラメータとして入ってきたデータを遍歴し、広く伝わってきたparentと同等かどうかを判断して、現在の都市はどのレベルですか?
2、戻ってきたfiltedDataはフィルタ結果です。
3、angglar.forEach(obj、fn)のサブジェネレータを使用して、その中にfnは三つのパラメータが入ってきて、それぞれvalue、key、objです。valueは現在遍歴されているオブジェクトであり、keyは遍歴されている唯一の識別であり、objは遍歴されている配列またはオブジェクト自体である。
使用(省): ng-options="c.id as c.name for c in cities Filter:0"
2)都市対応選択
1、data.provinceによってフィルタパラメータとして、都市フィルタを行います。
2、区域の選択は同じで、都市を選択したら、区域オプションボックス(ng-show指令)が現れます。
1、機能需要:フォーム検証が通らない場合、提出ボタンを失効させます。
html構造:
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
一、html構造
1、bootstrapの助けを借りて簡単なフォームを作成しました。
コードの主要部分は以下の通りです。
<div class="container" style="margin-top: 30px;" ng-controller="myCtrl">
<h1 style="text-align: center"> </h1>
<form action="upload.js" class="form-horizontal" name="myForm">
<div class="form-group">
<label for="username" class="col-sm-3 control-label"> </label>
<div class="col-sm-9">
<input type="text" autocomplete="false" name="username" placeholder=" " ng-model="data.username" id="username" class="form-control" required>
<div class="alert alert-danger help-block" >
5
</div>
<div class="alert alert-danger help-block" >
15
</div>
</div>
</div>
</form>
</div>
2、フォーム検証によくある問題と命令1)、問題:
」データをどのように結合するか――双方向結合
」検証フォーム――正規表現
」エラーメッセージを表示します。
」全体のフォームの検証
」検証されていないフォームの提出を避ける
」複数回の提出を防ぐ
2)常用命令
」コマンド:
ng-model、ng-required、ng-pattern、ng-maxlength、ng-minlength、ng-change
」スタイル:
ng-valid、ng-invalid、ng-presine、ng-dirty
』form制御変数
form Name.input FieldName.$error:フィールドエラー情報
form Name.input FieldName.$dirty:フィールドは変更されますか?
form Name.input FieldName.$presine:フィールドは初期状態ですか?
form Name.input FieldName.$valid:フィールドは有効ですか?
form Name.input FieldName.$invalid:フィールドは無効ですか?
二、機能実現
2.1ユーザ名認証
ユーザーがユーザー名フィールドを入力して検証するのは主に長さの検証と必要かどうかです。
1、ng-modelはフォームデータをバインドして、anglarの検証アプリを使用する。
2、ng-minlength、ng-maxlength所定のフィールドの長さ、required規定のフィールドは必ず記入します。
3、エラーメッセージ情報はformName.inputFieldName.$error.minlength/maxlengthによって表示するかどうかを決定します。入力が不正である場合、$errorに対応するエラー情報はtrueとなります。
以下のとおりです
<div class="form-group">
<label for="username" class="col-sm-3 control-label"> </label>
<div class="col-sm-9">
<input type="text" autocomplete="false" name="username" placeholder=" " ng-model="data.username" id="username" ng-minlength="5" ng-maxlength="15" class="form-control" required>
<div class="alert alert-danger help-block" ng-show="myForm.username.$error.minlength">
5
</div>
<div class="alert alert-danger help-block" ng-show="myForm.username.$error.maxlength">
15
</div>
</div>
</div>
2.2パスワード確認検証パスワードの確認検証は、2回入力したパスワードが一致していることを保証し、確認パスワードが入力されていない前に検証しないこと。
1、バインディングデータng-model=data.pwdConfirm(すべてのフォームデータはdataオブジェクトに保存されます)
2、data.pwdConfirmを判断!==data.passwordは二つのパスワードが一致するかどうかを確認します。
3、form Name.input Field.$dirtyでこの項目が記入されたかどうか確認します。
<div class="form-group">
<label class="col-sm-3 control-label"> </label>
<div class="col-sm-9">
<input type="password" name="pwdConfirm" ng-model="data.pwdConfirm" placeholder=" " id="pwdConfirm" required class="form-control">
<div class="alert alert-danger" ng-show="data.pwdConfirm!==data.password&&myForm.pwd.$dirty">
</div>
</div>
</div>
2.3メールアドレス検証メールアドレスの検証は主にメールボックスのフォーマットが正しいかどうか、フィールドの長さを確認します。
1、H 5でtype属性値emailを追加してください。
2、ng-pattern命令によりメール検証の正則を定義する。
3、メールアドレス検証常用正規表現:^([a-zA-Z 0-9_-])+@([[a-zA-Z 0-9_-)+(.[a-zA-Z 0-9_-)+
4、myForm.email.error.patternを通じてメールアドレスのフォーマットが正しいかどうかを検証する。
<div class="form-group">
<label class="col-sm-3 control-label"> </label>
<div class="col-sm-9">
<input type="email" name="email" ng-model="data.email" placeholder=" " class="form-control" required ng-pattern="/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/">
<div class="alert alert-danger help-block" ng-show="myForm.email.$error.minlength">
5
</div>
<div class="alert alert-danger help-block" ng-show="myForm.email.$error.pattern">
</div>
<div class="alert alert-danger help-block" ng-show="myForm.email.$error.maxlength">
30
</div>
</div>
</div>
2.4シングルチェックボックスシングルチェックボックスは主にデータバインディング問題とチェックボックスのデータレンダリングを決定します。
1、データをdataオブジェクトの属性として結びつける
2、複数選択のオプション値をng-repeatで巡回します。
3、value値を設定して提出する時に値を区分する
<div class="form-group">
<label class="col-sm-3 control-label"> </label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name="sex" value="1" ng-model="data.sex" />
</label>
<label class="radio-inline">
<input type="radio" name="sex" value="0" ng-model="data.sex" />
</label>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label"> </label>
<div class="col-sm-9">
<label class="radio-inline" ng-repeat="hobby in hobbies">
<input type="checkbox" name="hobby" ng-model="hobbiesC" value="{{hobby.id}}" /> {{hobby.name}}
</label>
</div>
</div>
<div class="col-sm-9 col-sm-offset-3">
<input type="reset" class=" btn btn-danger" value=" ">
<input type="submit" class="btn btn-primary " value=" ">
</div>
2.5都市二級連動1、都市データの定義:各都市の対象はid、parent、name属性、idは各都市の省に特有で、parentは父級の省または都市によって決められます。
2、都市データを、ng-optionsコマンドで遍歴する
2.5.1都市データモデル
scope.ciiesでデータモデルを定義します。
$scope.cities=[
{
id:1,
parent:0,
name:' '
},
{
id:2,
parent:1,
name:' '
},
...
]
2.5.2.中レンダリング都市データng-optionsコマンドとng-modelコマンドでデータを巡回し、デフォルト値を設定します。
<div class="form-group">
<label class="col-sm-3 control-label"> </label>
<div class="col-sm-3">
<select name="birthAddress" id="" ng-model="data.province" ng-options="c.id as c.name for c in cities">
<option value="">-- --</option>
</select>
</div>
</div>
説明:1、ng-options="obj.name for obj in datas"のよくある使い方は、Obj.id as obj.nameを通じてoptionタグを設定するvalue値がidで、内容はnameです。
2、ng-modelはselectのデフォルト値を設定するために使用できます。
2.5.3フィルターを定義し、省、都市などをフィルタリングする。
.filter("cityFilter",function(){
return function(input,parent){
var filtedData=[];
angular.forEach(input,function(value,key){
if(value.parent===parent){
filtedData.push(value)
}
})
return filtedData;
}
})
説明:1、上述のようにcityFilterを定義することによって、一つのparentがパラメータとして入ってきたデータを遍歴し、広く伝わってきたparentと同等かどうかを判断して、現在の都市はどのレベルですか?
2、戻ってきたfiltedDataはフィルタ結果です。
3、angglar.forEach(obj、fn)のサブジェネレータを使用して、その中にfnは三つのパラメータが入ってきて、それぞれvalue、key、objです。valueは現在遍歴されているオブジェクトであり、keyは遍歴されている唯一の識別であり、objは遍歴されている配列またはオブジェクト自体である。
使用(省): ng-options="c.id as c.name for c in cities Filter:0"
2)都市対応選択
1、data.provinceによってフィルタパラメータとして、都市フィルタを行います。
2、区域の選択は同じで、都市を選択したら、区域オプションボックス(ng-show指令)が現れます。
<div class="col-sm-2">
<select name="birthC" ng-model="data.cities" ng-options="c.id as c.name for c in cities|cityFilter:data.province">
<option value="">-- --</option>
</select>
</div>
<div class="col-sm-2" ng-show="!myForm.birthC.$pristine">
<select name="birthD" ng-model="data.district" ng-options="c.id as c.name for c in cities|cityFilter:data.cities">
<option value="">-- --</option>
</select>
</div>
2.6フォーム提出1、機能需要:フォーム検証が通らない場合、提出ボタンを失効させます。
html構造:
<div class="col-sm-9 col-sm-offset-3">
<input type="reset" class=" btn btn-danger" value=" " ng-click="reset()">
<input type="submit" class="btn btn-primary " value=" " ng-disabled="myForm.$invalid">
</div>
js:
$scope.reset=function(){
$scope.myForm.$setPristine();
}
注:フォームには$set Pristine()の方法があります。フォームを元の状態にリセットします。class、dirty、presineは元の状態に戻ります。ただし、フォームのエラー情報はerrorによって隠されませんので、フォームを検証する際には、エラー情報はすべて$dirtyで判断されます。以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。