2013-01-08 84 views
2

如何防止窗體上的自動驗證?每次我使用表單加載模板時,即使沒有輸入任何數據,它也會自動驗證自己。
我想在提交時觸發驗證。angularjs - 表單和驗證

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> 

而且怎麼可能,展現形式上面的「跨度」字段,只要有些錯誤是TRUE提交後?
當我輸入表單時,它也直接顯示。

回答

1

如果驗證已經發生,這應該不成問題。你只是不應該顯示錯誤信息。你可以做到這一點與$pristine or $dirty,這取決於你使用ng-showng-hide

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

在你send()功能,你最好加message作爲參數。您也可以在表單標籤上使用ng-submit

+0

看起來不錯!是否有可能將「ng-submit」的反饋發送到其他路由/部分?我的表單模板是「dealer-message.html」,但我需要關於「dealer-details.html」的反饋 - 這可能嗎? – Marek123

+0

您需要查看[$ routeParams](http://docs.angularjs.org/api/ng.$ro​​uteParams)。你可以定義一個路由(在$ routeProvider中)'/ details/feedback /:feedback'。當你改變你的路線(使用$ location)時,你只需將反饋添加到url(使用encodeURIComponent):var url ='/ details/feedback /'+ encodeURIComponent(feedback); – asgoth

+0

這裏有另一種可能性來控制何時顯示錯誤... http://stackoverflow.com/a/15842283/45767 – JeremyWeir