2013-06-20 81 views
1

如果你看一下我的fiddle來自外部控制器的按鈕提交表單驗證

我不知道爲什麼內部「提交」按鈕會觸發瀏覽器驗證(按照required屬性),但「外部按鈕'不?

外部按鈕調用形式submit()函數,所以我會期待相同的行爲,不是嗎?

我知道這可能不是一個角度問題,但我正在尋找一個Angular解決方案,這意味着我不必使用$元素(據我所知這是不好的做法)。

+0

內部提交按鈕觸發'required'行爲,因爲它的瀏覽器默認行爲。您無法通過使用javascript提交表單來觸發'required'行爲。您必須找到其他方式向用戶展示他們應該如何處理表單。您可能想使用'ngForm'附帶的'$ valid'屬性。 – Daiwei

+0

謝謝。如果您將此添加爲答案,我會將其標記爲正確。 –

+0

謝謝@ rob-campo – Daiwei

回答

1

內部提交按鈕觸發所需的行爲,因爲它的瀏覽器默認行爲。您無法通過使用javascript提交表單來觸發required行爲。您必須找到其他方式向用戶展示他們應該如何處理表單。您可能需要使用ngForm附帶的$valid財產。

0

當您使用$元素時,您會觸發純JavaScript中的事件,並且角度不知道發生了什麼,因此無法在此情況下驗證表單。你應該觸發表單驗證第一:

$scope.$broadcast('$validate'); 
if(!ngForm.$invalid) 
    $element.find("form")[0].submit(); 

對於這項工作,請定義與NG-form標籤的形式,像這樣:

<ng-form> /* BLABLABLA */ </ng-form> 

此處瞭解詳情:

http://docs.angularjs.org/api/ng.directive:ngForm

您還可以選擇此項:

AngularJS - How to trigger submit in a nested form

+0

謝謝。然而,我正在尋找的驗證是瀏覽器內置驗證。 –

相關問題