2012-09-21 32 views
2

我很苦惱於MVC4和JQuery驗證。JQuery驗證MVC4如何找出mvc表單無效的原因

我們有相當數量的文本框與他們旁邊的驗證消息。

一旦他們在所有消息中輸入了有效的消息,消息全部消失。但是當我這樣做:

var valid = $('form').valid(); 

它總是會返回false。 (How to fire jQuery function only if form is valid

我不知道這個表格有什麼問題。有沒有獲得表單的錯誤信息的方法?

我試圖在驗證掛鉤的顯示錯誤()如這裏所描述:

Jquery validate showerrors display name

但這從來沒有填充任何信息。正如我測試,我把這個在每個輸入框的變化:

if ($('form').valid()) { 
     alert('the form is valid'); 
    } 
    else if(!$('form').valid()) { 
     alert('the form is NOT valid');         
    } 

但它總是會返回無效。

編輯

正要即將創建的在線樣本(由webdeveloper的要求)。 Chrome隱藏了我的一些HTML(使用jquery tab控件)。所以去了IE獲取源代碼和驗證工作。然後在FF中試用它,它工作。所以它似乎只在Chrome中被破解。

EDIT 2

創造了jsfiddle.net頁:http://jsfiddle.net/qN3Cn/1/

在IE的形式將返回有效,鉻它是無效的。

回答

4

這可能是隱藏字段的錯誤,您可以在控制檯中查看所有錯誤:

$('form').validate().errorList 
+0

這是有幫助的。當我有一個文本框「真正」的錯誤,這將返回一個數組包含錯誤的對象。當我修復所有錯誤時,它將返回一個空數組,但仍然無效:$('form')。validate()。errorList; [] $('form')。valid() false – Jon

+0

@Jon請用http://jsfiddle.net/創建問題,然後我們可以查看您的問題。包括呈現的html標記和驗證庫。 – webdeveloper

+0

正是我在找的! StackOverflow總是真棒!感謝匿名的webdev。你讓世界變得更美好。 –

1

它來到了一個hiddenfield(hiddenfor)。回發時,我在模型的頁面上隱藏了一個日期。當Chrome瀏覽器不在美國時,Chrome並不喜歡播放它!我結束了有一次我Thread.CurrentThread.CurrentUICulture設置正確的東西很好地起到把這個在我的web.config

<system.web> 
     <globalization culture="en-GB" uiCulture="en-GB"/> 

+0

是的......在我的情況下,它也是一個日期隱藏字段與不正確的文化格式。該死的! :d –