我有这个AngularJS代码试图在textarea中没有文本时显示标签旁边的两颗星。相同的代码适用于输入标记,但不适用于textarea。
<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 documentation - textarea的行为与输入相同。
答案 0 :(得分:25)
<textarea>
标记的问题在于它没有定义name
属性。
AngularJS使用name
属性来公开验证错误。
你应该像这样定义你的textarea:
<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
属性通常没有多少用途,可以省略。
答案 1 :(得分:0)
对于表单验证,名称非常重要。给它一个应该起作用的名称。
<textarea ng-model="msg"
rows="8"
cols="50"
class="input-no-width rounded shaded left clearboth"
id="msg"
name="msg"
required>
</textarea>