CSSが(Chromeで)有効になっていないという問題があり、Twitter Bootstrapとの競合があると思います。
input.ng-invalid {
border-color: red;
outline-color: red;
}
私のコントローラーでは、私のパターンは次のように定義されています。
$scope.hexPattern = /^[0-9A-Fa-f]+$/;
そして、ライブDOMからHTMLをコピーすると、ng-invalid
とng-invalid-pattern
の両方が設定されているので、ng-pattern
が機能している必要があります。
<div class="control-group">
<label class="control-label" for="salt">Salt: </label>
<div class="controls">
<input type="text" id="salt" ng-model="salt" ng-pattern="hexPattern" class="ng-dirty ng-invalid ng-invalid-pattern">
</div>
</div>
Twitterの Forms セクションの「Validation states」セクションに、Bootstrap Base CSS、コントロールグループにerror
クラスを追加する必要があることがわかりますdiv。
<div class="control-group error">
質問:子入力class=error
に基づいてclass=ng-invalid
を設定する方法これは、いくつかのソフトなngクラス式で実行できますか?これをコントローラーのコードで設定できますか?プロパティの変更のようなパターン評価を「。$ watch」する方法はありますか? 「赤」のアウトラインを取得する他のアイデアはありますか?
ng-class
ディレクティブで簡単にできます:
<form name="myForm">
<div class="control-group" ng-class="{ error: myForm.salt.$invalid }">
<label class="control-label" for="salt">Salt: </label>
<div class="controls">
<input type="text" name="salt" ng-model="salt" ng-pattern="hexPattern">
</div>
</div>
</form>
http://plnkr.co/edit/RihsxA?p=preview
[〜#〜] edit [〜#〜]
bootstrap 3.3.5およびangular 1.4.2:
<form name="myForm">
<div class="form-group" ng-class="{ 'has-error': myForm.salt.$invalid }">
<label class="control-label" for="salt">Salt: </label>
<input class="form-control" type="text" name="salt" ng-model="salt" ng-pattern="hexPattern">
</div>
</form>
より良い解決策は、独自のCSSルールを追加することだと思います。これにより、コードがはるかに単純になり、ボーナスとして、「ダーティ」要素にのみ適用されるようにルールを設定できます。これにより、ユーザーが何かを入力しようとした後にのみフィールドが強調表示されます。
私のアプリケーションでは、 AngularJSフォームのドキュメント の例に基づいて、このcssを追加しました。
/* Forms */
.ng-invalid.ng-dirty {
border-color: red;
outline-color: red;
}
.ng-valid.ng-dirty {
border-color: green;
outline-color: green;
}