0
我一直在Google上搜索一段時間,似乎無法爲我的具體情況找到一個好答案。我找到了實時驗證的方法,但是我希望在用戶點擊「提交」後將其與一些自定義驗證結合起來。我想讓用戶仍然可以點擊提交,即使它無效,但我會在代碼中取消提交。看看下面的代碼:AngularJS - 對錶單提交進行額外的驗證
<form name="cashForm" id="cashForm" novalidate>
<input type="text" id="name" required /> //
<input type="number" placeholder="Tax: " required name="tax" id="tax" />
<input type="number" placeholder="Tip: " required name="tip" id="tip" />
<button ng-click="submission()" ng-disabled="paymentForm.$invalid">Submit</button>
</form>
//inside controller
this.submission = function() {
//check if tip + tax is over 20
//prevent form and show error message if not
//otherwise allow default behavior
}
所以我只希望如果稅務/提示是超過10.我如何檢查這種形式實際上提交以及如何防止表單提交,如果它不符合要求?另外,我會把這個邏輯放在控制器中嗎?
謝謝馬修。我認爲這應該讓我很好。最後一個問題是,控制器是放置這個邏輯的正確位置?我聽說你不應該在控制器中放置太多的邏輯,但似乎這是唯一有意義的地方。 –
個人而言,我認爲它在控制器中很好,因爲這些條件直接決定視圖模型('$ scope')填充的內容,即哪些錯誤消息。確實,你應該儘量讓控制器儘可能地精簡,如果我必須在控制器中進行大量的滾動,我確實感到不舒服,這可能意味着它做了太多事情。如果它失去控制,則考慮將所有「檢查是否提交」邏輯抽象到自定義指令中,並創建自己的自定義點擊(提交)行爲來替換按鈕上的「ng-click」。 –
然後,如果您希望獲得_really_聰明,請嘗試通過傳遞一個包含確定是否允許繼續執行提交的設置的配置對象來使自定義指令可重用。然後,您可以重複使用它並輕鬆地複製行爲。時間的投入。 –