2017-02-10 73 views
1

我有一個表單,它有一系列的輸入以及通過單擊按鈕添加更多輸入的選項。每個輸入都是必需的,並且已經有$ .touched驗證器,因此如果用戶觸摸它們,它們將正確驗證。然而,如果用戶沒有填寫所有現有的輸入,點擊添加按鈕(這是而不是表單提交)應該防止添加(完成)更多的輸入,並且它應該觸發輸入驗證器,以便用戶必須填寫它們。AngularJS驗證:如何觸發按鈕單擊驗證?

我一直無法做到這一點。我很困惑,爲什麼我不能在ng-click事件中隨意激發其他元素的驗證。

即使用戶沒有與這些字段進行交互,我如何觸發按鈕單擊上的輸入驗證?

Plunker顯示我的意思一個粗略的想法:http://plnkr.co/edit/LjMz5Ad19izthgKTK6Pi所有的

<input type="text" name="Name" ng-model="editContactsForm.Name" ng-maxlength="100" required /> 
<small class="error" ng-show="(editContactsForm.Name.$error.required && editContactsForm.Name.$dirty) || (editContactsForm.Name.$error.required && editContactsForm.Name.$touched)">This is a required field.</small> 

<br/> 
<input type="text" name="Name2" ng-model="editContactsForm.Name2" ng-maxlength="100" required /> 
<small class="error" ng-show="(editContactsForm.Name2.$error.required && editContactsForm.ContactTitle.$dirty) || (editContactsForm.Name2.$error.required && editContactsForm.Name2.$touched)">This is a required field.</small> 

回答

0

首先我沒有看到任何formplunker,你會需要它的人工確認。

您可以使用$setSubmitted它允許你這樣做,你的點擊處理程序,你可以檢查表單驗證,什麼也不做,那麼:

addContent = function(form) { 
    form.$setSubmitted(); 
    if(form.$invalid){ 
     return; 
    } 
    ... 
} 
+0

怪異,形式標記在那裏,我必須小心刪除它。無論哪種方式,我真的有一個完全充實的形式,驗證器功能等。 –