2014-12-03 56 views
0

在模型的驗證,財產ItemDescription我已經設置屬性[必需] 根據我的UI選擇,我做這個領域的看法有時可見,有時候不可見的。刪除看不見的表單字段

如何使不顯眼的驗證忽略[必需的]屬性當此字段不可見時。

這是我試過到目前爲止:

$(document).ready(function() { 

     //doesn't seem to do anything. The field is still validated 
     $("form").validate().settings.ignore = "#ItemDescription"; 

     //throws an error 
     $("form").data("validation").settings.ignore = "#ItemDescription"; 

     //doesn't seem to do anything. The field is still validated 
     $.validator.setDefaults({ 
      ignore: "#ItemDescription" 
     }); 

     //doesn't seem to do anything. The field is still validated 
     $("#ItemDescription").removeAttr("data-val"); 
     $("#ItemDescription").removeAttr("data-val-required"); 
}); 

我的猜測是,我來不及做這些調用。 我使用jQuery 1.9.0和1.9.0 jquery.validate

感謝

+0

你是如何隱藏價值的?如果您最初使用'@ Html.HiddenFor()'渲染它,則不會執行驗證。但是,如果你使用jQuery來隱藏它,那麼它太晚了($ .validator已經解析了表單,你需要重新解析它) – 2014-12-03 22:14:27

回答

0

你應該做的是。當你隱藏控件時,添加一個隱藏字段,其中包含你想要的值(可能是默認值)。或者您應該控制hiddenField中的值,這樣您就不會遇到所需的問題。 Dataannotation不會被忽略。

你使用ViewModel嗎?如果不是,這樣做是個好主意。所以在ViewModel中,屬性將不具有Required。因此,在服務器端,您可以將ViewModel轉換爲模型以更新數據庫時所需的值。

我希望這是清楚的。

+0

我使用視圖模型。我有[必填]註釋用於不顯眼的驗證。當字段不可見時,我只想忽略它。通過閱讀Google,似乎可以完成。唯一的一點是我嘗試了所有建議的方法,但沒有奏效。 – bobetko 2014-12-03 18:40:19

+0

隱藏領域技巧呢? – 2014-12-03 18:44:14

+0

不知道如何添加隱藏字段解決問題。即使隱藏的領域也沒有任何價值。必須做[必需]與AllowEmptyString = true ...不知道... – bobetko 2014-12-03 18:48:14

0
$("form").validate({ 
    ignore:'#ItemDescription' 
}); 

ignore設置允許您指定將驗證​​表單時忽視的選擇。在這種情況下,我已經指定了ID選擇器。