2011-09-02 31 views
1

我在當前正在執行一些驗證的模式窗口中有一個窗體。 (我使用ASP.NET MVC和jQuery UI,AJAX表單,數據註釋和不顯眼有效)當MVC驗證觸發時,對DOM做了哪些更改?

當此驗證觸發到目前爲止,我已經注意到,它做了幾件事情:

1:我驗證摘要得到它的類從.validation-summary-valid改爲.validation-summary-errors

2:我的無效輸入紛紛加入到再一類叫做.input-validation-error

3:我的驗證的消息讓他們的類從.field-validation-valid改爲.field-validation-error

但還有一件事是它正在做,我無法弄清楚它是如何跟蹤這個。

我有一個需要的文本框,在觸發驗證之前,我可以在此框中選擇,然後選擇另一個框,並驗證將無聲。

但是,只要我通過點擊提交一個空的文本框來觸發驗證,我可以選擇文本框並輸入一些內容以立即刪除驗證,但是如果我將它清空並選擇一個不同的框,無需重新提交即可應用。

所以我的問題是:發生了什麼變化,它是如何知道我已經嘗試提交?

回答

1

當調用validate時,它會爲每個應該驗證的input/select添加一個類。當輸入/選擇無效,它增加了一個類來輸入/選擇:

class="input-validation-error" 

當它是有效的,它增加了:

class="valid" 

驗證只有當您更改控制火災價值,而不是當它失去焦點時。

即使在您提交表單之前,驗證也會引發更改。採取必要的文本框,爲它添加一個值,然後關閉...然後返回並刪除該值,並且您應該看到突出顯示爲紅色的文本框。

+0

你是對的,觸發似乎是當文本框被改變。但我仍然有點困惑。我選擇文本框它沒有課,我標籤關閉,仍然沒有課,我輸入和刪除值,它有錯誤類。然後,我使用JQuery使用取消按鈕刪除此類。我重新打開窗口,檢查輸入並且沒有班級(與以前一樣),但是儘管如此,退出仍然導致驗證啓動。它如何知道? – 4imble