はい、ディレクティブでも実行できますが、テキストだけに2文字が含まれているかどうかを検証ng-pattern
する方が良い方法です。
ここで、html は(.*?[a-zA-Z]){2,}
このパターンを使用します。
HTML
<input type="text" ng-model="fistname_lastname" max-length="30"
ng-pattern="/^(.*?[a-zA-Z]){2,}$/" placeholder="add new todo here"/>
働くフィドル
アップデート
フォームの送信を停止したい場合は、心配する必要はありません。Angular はこれを内部的に管理します。ng-pattern
フォームフィールドに対して言及するたびに、角度はそのフィールドのオブジェクトを作成します(フィールドname
にはng-model
属性が必要です)。そのオブジェクトは特定のフィールドの有効性を担当します。ng-pattern
regx が満たされないように、Angular はそのフィールドを asにします。invalid
これは、追加 ng-invalid-pattern
&ng-invalid
クラスを意味します。その結果、フォームも無効になります。フォームオブジェクトを見ると、フォームがhtmlのinvalid
構文を使用して取得されていることがわかります。form.$valid
HTML
<form name="form" ng-submit="submit()">
<input type="text" ng-model="firstname_lastname" size="30" ng-pattern="/^(.*?[a-zA-Z]){2,}$/" placeholder="add new todo here"/>
<button type="submit">Submit</button>
</form>
コントローラ
$scope.submit = function(){
if($scope.form.$invalid) //here you can stop use from submitting for by checking validity
alert('Form is invalid'); //form is invalid
else
alert('Form is valid');//here you can do actual submit to server
}
更新されたフィドル
うまくいけば、これはあなたを助けることができます、ありがとう.