2013-01-08 2 views
2

comment empêcher la validation automatique sur un formulaire? Chaque fois que je charge le modèle avec le formulaire, il se valide automatiquement même sans aucune donnée tapée dans les entrées.
Je veux déclencher la validation sur soumettre.angularjs - forme et validation

HTML:

<span ng-show='message.$invalid == true'>This e-mail is black-listed!</span> 
    <form novalidate class="dealermessageform" name="message"> 
     <input type="text" name="messagename" placeholder="Name" class="messagename" ng-model="user.name" required> 
     <input type="email" name="messageemail" placeholder="E-Mail Adresse*" class="messageemail" ng-model="user.email" required> 
     <textarea class="message" name="message" placeholder="Schreibe eine Nachricht. *" required></textarea> 
     <span class="help-block">*alle markierten Felder sind Pflichtfelder</span> 
     <div class="grid_4 alpha omega submitbutton"> 
      <input type="submit" class="submitbutton" value="Senden" id="submit" ng-click="send()"> 
     </div> 
    </form> 

Et comment est-il possible, pour afficher le champ "span" au-dessus de la forme, SEULEMENT si des erreurs sont TRUE après soumettre?
Il apparaît également directement lorsque j'entre le formulaire.

Répondre

1

Cela ne devrait pas poser de problème si la validation a déjà lieu. Vous ne devriez pas montrer le message d'erreur. Vous pouvez le faire avec $pristine or $dirty, selon si vous utilisez ng-show ou ng-hide:

<span class="help-block" ng-show="message.$dirty && message.$invalid">*alle markierten Felder sind Pflichtfelder</span> 

Dans votre fonction send(), vous feriez mieux d'ajouter message comme paramètre. Vous pouvez également utiliser ng-submit sur le tag de formulaire à la place.

+0

bonne mine! Est-il possible d'envoyer des commentaires de la "ng-submit" à une autre déroute/partielle? Mon modèle de formulaire est "dealer-message.html" mais j'ai besoin des commentaires sur "dealer-details.html" - est-ce possible? – Marek123

+0

Vous devez regarder [$ routeParams] (http://docs.angularjs.org/api/ng.$routeParams). Vous pouvez définir un itinéraire (dans $ routeProvider) '/ details/feedback /: feedback'. Lorsque vous changez votre route (avec $ location), vous ajoutez simplement le feedback à l'url (en utilisant encoderURIComponent): var url = '/ details/feedback /' + encoderURIComponent (feedback); – asgoth

+0

Voici une autre possibilité de jouer avec pour contrôler quand afficher les erreurs ... http://stackoverflow.com/a/15842283/45767 – JeremyWeir