2012-11-04 13 views
13

Mam ten kod AngularJS próbujący pokazać dwie gwiazdki obok etykiety, gdy nie ma tekstu w obszarze tekstowym. Ten sam kod działa dla znaczników wejściowych, ale nie dla textarea.Sprawdzanie poprawności tekstowej JS kątowego

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

Zgodnie z AngularJS documentation - textarea powinny zachowywać się tak samo jak dane wejściowe.

Odpowiedz

24

Twój problem z tagiem <textarea> polega na tym, że nie definiuje on atrybutu name.

AngularJS używa atrybutu name do ujawniania błędów sprawdzania poprawności.

Należy zdefiniować textarea tak:

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

Należy pamiętać, że posiadanie id i ng-model nie wystarczy, aby prawidłowo obsługiwać wiadomości walidacji. W aplikacjach AngularJS atrybut id często nie służy wielu celom i można go pominąć.

+0

Dziękuję. Myślałem, że używa id. – Zec

+0

To bardzo mi pomogło. Ale myślę, że dzieje się coś dziwnego w tym samym czasie. Mogę pominąć atrybut nazwy w polu wprowadzania tekstu i sprawdzanie poprawności będzie działało dobrze, ale textarea wymagają, żebym go tam miał. –

0

Do sprawdzania poprawności formularza nazwa jest bardzo ważna. Nadaj mu nazwę, która powinna działać.

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