14

テキストエリアにテキストがない場合、ラベルの横に2つの星を表示しようとするこのAngularJSコードがあります。入力タグでも同じコードが機能しますが、テキストエリアでは機能しません。

<div class="input-left">
    <label for="email">
        <span ng-show="contactform.email.$error.required" class="required">*</span>Email:
    </label>
    <input ng-model="email" type="text" name="email" id="email" required></br></br>
    <label for="budget">Budzet:</label>
    <input ng-model="budget" type="text" name="budget" id="budget">
</div>
<div class="clearboth">
    <label for="msg" class="left" >
        <span ng-show="contactform.msg.$error.required" class="required">**</span>Pitanja ili Komentari?
    </label>
    <textarea ng-model="msg" rows="8" cols="50" class="input-no-width rounded shaded left clearboth" id="msg" required></textarea>
</div>

AngularJS のドキュメントによると、テキストエリアは入力と同じように動作する必要があります。

4

2 に答える 2

27

タグの問題は、属性<textarea>を定義していないことです。name

AngularJS はname属性を使用して検証エラーを公開します。

次のようにテキストエリアを定義する必要があります。

<textarea ng-model="msg" name="msg" rows="8" cols="50"
          class="input-no-width rounded shaded left clearboth" id="msg" required>
</textarea>

id検証メッセージを適切に処理するには、 とng-modelがあるだけでは不十分であることに注意してください。AngularJS アプリケーションでは、このid属性はあまり役に立たないことが多く、省略される可能性があります。

于 2012-11-04T12:04:49.560 に答える
0

フォーム検証の名前は非常に重要です。動作する名前を付けます。

<textarea ng-model="msg" 
          rows="8" 
          cols="50" 
          class="input-no-width rounded shaded left clearboth" 
          id="msg" 
          name="msg" 
          required>
</textarea>
于 2017-08-25T01:30:26.407 に答える