14

当文本区域中没有文本时,我有这个 AngularJS 代码试图在标签旁边显示两颗星。相同的代码适用于输入标签,但不适用于 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 文档- textarea 的行为应该与输入相同。

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 回答