2017-07-14 144 views
0

有沒有辦法注入一些驗證 - 自定義或其他 - 沒有綁定到表單元素?喜歡 - 驗證某些條件是否滿足,但它是否符合標準的AngularJS驗證?AngularJS - 驗證不基於表單元素

更新:

這裏就是我試圖完成:

我有一個表格包含部分的列表。每個部分由一個複選框控制,當該複選框被選中時,該部分將顯示(通過ng-if)。

在每個部分中,都有機會通過按鈕點擊激活的彈出窗口模式來選擇項目。在爲該部分選擇項目之前,表單需要無效。一旦一個項目被選中對於每個被選中的選項,那麼表格必須是有效的。

我有一個按鈕在窗體的底部與ng-disabled =「frm。$ invalid」。我希望保持禁用狀態,直到每個已檢查的部分都包含通過模態選擇的項目。

更新2:

下面是一些示例代碼:

<form class="form-horizontal" role="form" name="frm" novalidate> 
 
    <label>Name: </label> 
 
    <input type="text" ng-model="name" required/> 
 

 
    <div ng-repeat="orderItem in orderItems"> 
 
    <input type="checkbox" name="items[]" ng-model="orderItem.selected"/> 
 
    <div ng-if="orderItem.selected"> 
 
     ... bunch of form fields 
 
     <button ng-click="openExchangeSelectionModal(orderItem)">Select Item</button> 
 
     <div ng-show="orderItem.exchange_item"> 
 
     Selected Item: {{orderItem.exchange_item.name}} - ${{orderItem.exchange_item.price | number: 2}} 
 
     </div> 
 
    </div> 
 
    </div> 
 

 
    <button ng-disabled="frm.$invalid" ng-click="submitOrder">Submit</button> 
 
</form>

+0

你想在模式關閉之前驗證嗎?這聽起來像你正在尋找指令。例如'

',並且在指令中您可以檢查innerHTML,或者如果放到上,則可以檢查值 – Ero

+0

您想要做什麼具體操作?沒有一些代碼,我們不會很容易幫助你。 – lealceldeiro

+0

@Ero:我希望它在模式關閉後驗證 –

回答

0

檢查,如果表單有效不會幫助你在這種情況下,因爲不存在需要沒有被填充的輸入。
我會建議是,禁用按鈕將調用一個函數,使有關的擴展複選框的數量和所選的項目數一些邏輯,並返回按鈕的狀態(TRUE表示有效,否則爲false)

讓我們示例代碼你把:

//some html tags... 

    <button ng-disabled="checkValid()" ng-click="submitOrder">Submit</button> 
</form> 

注意,我改變了FRM $無效的checkValid功能,這是你的控制器上定義的,可以執行要確定,而表現出任何邏輯函數您提交是否按鈕。

+0

有沒有一種方法可以確保表單在選擇項目之前無效? –

+0

該邏輯需要在「checkValid」功能中實現 –

+0

難題 - 如何使用原生AngularJS無法使用? –