[解決済み] ng-repeat、ng-showで動的に作成された入力を検証する方法(angular)
質問
ng-repeatを使用して作成されたテーブルがあります。テーブルの各要素にバリデーションを追加したいです。問題は、各入力セルがその上下のセルと同じ名前を持っていることです。そこで
{{$index}}
の値で入力に名前を付けることができますが、HTMLの文字列リテラルが正しく表示されるにもかかわらず、現在では動作しています。
今現在の私のコードは以下の通りです。
<tr ng-repeat="r in model.BSM ">
<td>
<input ng-model="r.QTY" class="span1" name="QTY{{$index}}" ng-pattern="/^[\d]*\.?[\d]*$/" required/>
<span class="alert-error" ng-show="form.QTY{{$index}}.$error.pattern"><strong>Requires a number.</strong></span>
<span class="alert-error" ng-show="form.QTY{{$index}}.$error.required"><strong>*Required</strong></span>
</td>
</tr>
を削除してみました。
{{}}
をインデックスから削除しましたが、これもうまくいきません。今のところ、inputのvalidationプロパティは正しく動作していますが、エラーメッセージは表示されません。
どなたか、ご意見をお聞かせください。
編集する 以下の素晴らしい回答に加え、この問題をより詳しく取り上げているブログ記事をご紹介します。 http://www.thebhwgroup.com/blog/2014/08/angularjs-html-form-design-part-2/
解決方法は?
AngularJSは、検証エラーを公開するために入力名に依存しています。
残念ながら、今日のところ、入力の名前を動的に生成することは (カスタムディレクティブを使用しない限り) 不可能です。実際 入力ドキュメント name属性は文字列しか受け付けないことがわかります。
動的な名前」の問題を解決するために を使用するには、インナーフォームを作成する必要があります ( ng-form ) :
<div ng-repeat="social in formData.socials">
<ng-form name="urlForm">
<input type="url" name="socialUrl" ng-model="social.url">
<span class="alert error" ng-show="urlForm.socialUrl.$error.url">URL error</span>
</ng-form>
</div>
もう一つの方法は、このためのカスタムディレクティブを書くことです。
ngFormの使い方を示すjsFiddleはこちらです。 http://jsfiddle.net/pkozlowski_opensource/XK2ZT/2/
関連
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み] HTMLのinputboxでjQueryを使って数字(0-9)だけを許可する方法は?
-
[解決済み] 2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?
-
[解決済み] CSSでテキストや画像の背景を透明にするには?
-
[解決済み] Javascriptで文字列の最後の文字を切り取るにはどうしたらいいですか?
-
[解決済み] 動的に生成された要素にイベントバインディングを行うか?
-
[解決済み] jQueryを使用してハイパーリンクのhref属性を変更する方法
-
[解決済み] AngularJSを使用して、ブラウザのコンソールで$scope変数にアクセスするにはどうすればよいですか?
-
[解決済み] 正規表現を使用した電話番号の検証方法
-
[解決済み] 変数を使用してオブジェクトのプロパティに動的にアクセスする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
親子コンポーネント通信を解決する3つのVueスロット
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
vueディレクティブv-bindの使用と注意点
-
Vueでルートネスティングを実装する例
-
[解決済み】リソースの読み込みに失敗した:Bind関数でサーバーが500(Internal Server Error)のステータスで応答した【非公開
-
[解決済み】awaitは非同期関数でのみ有効です。
-
[解決済み] Web API エラー - このリクエストはブロックされました; コンテンツは HTTPS で提供されなければなりません
-
[解決済み】JavaScript TypeError: null のプロパティ 'style' を読み取ることができない
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?
-
[解決済み] htmlフォームのネストは可能ですか?