2012-06-29 51 views
3

我正在使用ASP.net MVC與twitter引導。自定義MVC驗證屬性和引導格式問題

我加入下列以獲得等領域的錯誤,在引導

$.validator.setDefaults({ 
    highlight: function (element) { 
     $(element).closest(".control-group").addClass("error"); 
    }, 
    unhighlight: function (element) { 
     $(element).closest(".control-group").removeClass("error"); 
    } 
}); 

這與所有驗證工作的偉大正確的樣式,除了自定義驗證屬性。我創建的自定義驗證程序檢查是否選中了複選框,如果不是,則需要在文本字段中輸入內容。這只是一個例子,但我創建的其他自定義驗證屬性以下面描述的相同方式失敗。

如果我提交表單,所有錯誤的樣式都是正確的,除了使用我的自定義驗證程序的字段。不過,我知道驗證器運行,因爲錯誤消息出現,但消息和字段是黑色而不是紅色。

如果我在字段中輸入一些文本以滿足驗證器,錯誤消息將消失。然後,如果我刪除該文本,則會返回錯誤消息,並且所有內容都應該是紅色。

然後,如果我再次提交表單,即使錯誤仍然存​​在,紅色樣式也會消失,但僅限於使用自定義驗證程序的字段,其他所有錯誤仍爲紅色。

在表單提交時,我設置的默認值(如上所示)不會針對使用自定義驗證器的字段運行,但默認值將針對其他所有運行。

但是,使用自定義驗證程序對字段進行模糊處理和關鍵事件處理後,所有行爲都如預期的那樣運行,並且所有樣式都按預期工作。

我不知道下一步該看什麼。任何幫助/方向表示讚賞。

+0

你可以重新創建的一個網站http://jsfiddle.net/或http你的榜樣://jsbin.com/更好地查看錯誤? 謝謝 –

+0

看到這個問題:http://stackoverflow.com/questions/7493512/jquery-unobtrusive-validation-in-net-mvc-3-showing-success-checkmark –

回答

0

我最近有同樣的問題,直到我發現在同一.control-group內有有效和無效的輸入。 (在我的情況下,<input type="hidden">字段)。如果適用於您的情況下,也可以使用由highlightunhighlight方法,這樣提供的errorClass

function highlight(element, errorClass, validClass) { 
    $(element) 
     .addClass(errorClass) 
     .closest(".control-group") 
     .addClass("error"); 
}; 

function unhighlight(element, errorClass, validClass) { 
    var c = $(element) 
     .removeClass(errorClass) 
     .closest(".control-group"); 
    // make sure not to remove parent container error class, 
    //if there is still an invalid input field inside 
    if (c.find("." + errorClass).length < 1) 
     c.removeClass("error"); 
};