Anjuularjs Form Validation
ユーザーがフォームに入力した内容に基づいて、リアルタイムで視覚的なフィードバックを提供できることは非常に重要です。人間対人間のコミュニケーションのコンテキストでは、フォーム検証によって与えられるフィードバックは、正しい入力を取得することと同じくらい重要です。
フォーム検証は、ユーザーに有益なフィードバックを提供するだけでなく、悪意のある入力や誤った入力による損傷から Web アプリケーションを保護します。 Web フロントエンドのバックエンドを保護するために最善を尽くす必要があります。
AngularJSはHTML5のフォーム検証機能と独自の検証命令を組み合わせることができ、とても便利です。 AngularJS は、多くのフォーム検証命令を提供します。
<form name="form" novalidate> <label name="email">Your email</label> <input type="email" name="email" ng-model="email" placeholder="Email Address"/></form>
フォーム検証を使用するには、まずフォームに上記の例のように name 属性があることを確認します。
すべての入力フィールドは、最大長と最小長などの基本的な検証を実行できます。これらの機能は、新しい HTML5 フォーム属性によって提供されます。
フォームに対するブラウザのデフォルトの検証動作をブロックしたい場合は、form要素にnovalidateタグを追加できます
1.必須
フォーム入力が入力されたかどうかを確認するには、次のように入力します。入力フィールド 要素に必要な HTML5 タグを追加するだけです:
注: 必須属性は次の タイプに適用されます: テキスト、検索、URL、電話、電子メール、パスワード、日付ピッカー、数値、チェックボックス、ラジオとファイル
<input type="text" required />
2. 最小長 ng-minleng="{number}"
フォーム入力のテキスト長が特定の最小値より大きいかどうかを確認するには、AngularJS ディレクティブを使用します。入力フィールドの ng-minleng="{number}"
<input type="text" ng-minlength="5" />
3. 最大長 ng-maxlength="{number}"
フォーム入力のテキストの長さが以下であるかどうかを確認するには特定の最大値に等しい場合は、入力フィールド {number}" で AngularJS ディレクティブ ng-maxlength=" を使用します
<input type="text" ng-maxlength="20" />
4. パターン マッチング ng-pattern="/PATTERN/"
ng- を使用しますpattern="/PATTERN/" を使用して、入力が指定された正規表現と一致することを確認します。
<input type="text" ng-pattern="[a-zA-Z]" />
5. 電子メール
入力コンテンツが電子メールであるかどうかを確認するには、次のように入力タイプを電子メールに設定するだけです。 :
<input type="email" name="email" ng-model="user.email" />
6. 数値
入力内容を確認します 数値かどうか、入力タイプを数値に設定します:
<input type="number" name="age" ng-model="user.age" />
7. URL
入力内容がURL、入力タイプを url:
<input type="url" name="homepage" ng-model="user.facebook_url" />
in the form Control variables
フォームのプロパティは、それらが属する $scope オブジェクトでアクセスでき、$scope にアクセスできますオブジェクトなので、JavaScript は DOM 内のフォーム プロパティに間接的にアクセスできます。これらのプロパティを利用すると、(AngularJS の他のすべてと同様に) フォームに対してリアルタイムの応答を行うことができます。これらのプロパティには次のものが含まれます。 (これらのプロパティには、以下の形式を使用してアクセスできることに注意してください。)
formName.inputFieldName.property
■未変更フォーム
これは、ユーザーがフォームを変更したかどうかを判断するために使用されるブール型プロパティです。変更されていない場合は値がtrue、変更されている場合は値がfalse
formName.inputFieldName.$pristine
■変更されたフォーム
ユーザーがフォームを変更している限り、入力が検証されているかどうかに関係なく、否か、値は true を返します
formName.inputFieldName.$dirty
■合法的な形式
このブール属性は、フォームの内容が合法であるかどうかを判断するために使用されます。現在のフォームのコンテンツが正当な場合、次の属性の値は true:
formName.inputFieldName.$valid
■ 不正なフォーム
このブール属性は、フォームのコンテンツが不正かどうかを判断するために使用されます。現在のフォームのコンテンツが不正な場合、次の属性の値は true になります:
formName.inputFieldName.$invalid
■ Error
これは、AngularJS によって提供されるもう 1 つの非常に便利な属性です: $error オブジェクト。これには、現在のフォームのすべての検証と、それらが有効かどうかに関する情報が含まれています。このプロパティにアクセスするには、次の構文を使用します。
formName.inputfieldName.$error
$parsers
ユーザーがコントローラーを操作し、ngModelController の $setViewValue() メソッドが呼び出されると、$parsers 配列内の関数がパイプライン処理されます。フォームは 1 つずつ呼び出されます。最初の $parse が呼び出された後、実行結果は 2 番目の $parse に渡され、以下同様です
これらの関数は、入力値を変換したり、$setValidity() 関数を通じてフォームの有効性を設定したりできます。
$parsers 配列の使用は、カスタム検証を実装する方法の 1 つです。
例如,假设我们想要确保输入值在某两个数值之间,可以在 $parsers 数组中入栈一个新的函数,这个函数会在验证链中被调用。
每个 $parser 返回的值都会被传入下一个 $parser 中。当不希望数据模型发生更新时返回undefined 。
html
<!DOCTYPE html><html ng-app="myApp"><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>表单测试</title> <link rel="stylesheet" href=""> <script type="text/javascript" src="angular.1.2.13.js"></script></head><body> <p ng-controller="TestController"> <form name="testForm"> <input type="number" name="inputs" ng-test ng-model="obj.number"> <span ng-show="testForm.inputs.$error.test">good</span> <span ng-hide="testForm.inputs.$error.test">bad</span> <p>{{ testForm.inputs.$valid }}</p> <p>{{ testForm.inputs.$invalid }}</p> <p>{{ obj.number }}</p> </form> </p> <script type="text/javascript" src="test5app.js"></script></body></html>
javascript ( test5app.js )
angular.module('myApp', []).controller('TestController', function($scope) { $scope.obj = { number: 34 } }).directive('ngTest', function() { return { require: '?ngModel', restrict: 'AE', link: function($scope, iElm, iAttrs, ngModel) { if (!ngModel) return; ngModel.$parsers.push(function(viewValue) { var num = parseInt(viewValue); if (num >= 0 && num < 99) { ngModel.$setValidity('test', true); return viewValue } else { ngModel.$setValidity('test', false); return undefined } }) } } });
以上がAngularJs フォーム検証メソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。