2012-08-05 95 views
5

我有了一個選項,輸入尺寸的一種形式:MVC 3不顯眼的驗證 - 有條件地禁用/啓用驗證

  • 寬度&高度
  • 寬度
  • 身高

而且我有兩個div容器,我隱藏/顯示,這取決於三個選項中選擇:

<div class="editor-field" id="width-container"> 
    @Html.EditorFor(model => model.Width) 
    @Html.ValidationMessageFor(model => model.Width) 
</div> 

<div class="editor-field" id="height-container"> 
    @Html.EditorFor(model => model.Height) 
    @Html.ValidationMessageFor(model => model.Height) 
</div> 

如果選擇高度,然後寬度不顯示在表格上,我怎麼能禁止在時尚輸入欄寬不顯眼的驗證,讓我輕鬆地復權如果用戶改變他們的想法,即刪除data- *屬性不是一個選項。我很高興地創建一個CustomAttribute類來處理這個,但我不希望有破解標準的jQuery的文件,使這項工作,因爲它使得更新到新版本頭疼走下賽場。如果一切都失敗了,我將使用我通常的技巧,當它們不可見時將字段值0加到字段中,然後在顯示時刪除它。

編輯:

請留意,當寬度不可見它不是一個「隱藏」的領域本身,它只是一個輸入變量,因爲父div有顯示器的風格,這不是對用戶可見:沒有

回答

12

您可以設置jQuery的驗證多數民衆贊成處理您的不顯眼的驗證,忽略隱藏元素:

jQuery.validator.defaults.ignore = ":hidden"; 

// the line above is outside any $(document).ready(...) or similar 
$(document).ready(function(){ 
    ... 
}); 
... 
+0

我看過這個版本的各種版本,但它們都不起作用 - 我得出的結論是,這個問題或者是這個規則不起作用,因爲它不是隱藏的輸入標籤,它是父級div - 或者這個規則被設計用於在「隱藏」標籤而不是「不可見」輸入標籤上工作。順便說一句我試過你的解決方案,它不工作。 – Rob 2012-08-05 12:49:13

+0

':隱藏的'對於隱藏的元素是絕對正確的,因爲他們的父母是隱藏的。正如你可以在這個小提琴中看到的,我的解決方案在一個基本情況下運行良好:http://jsfiddle.net/7PmEz/5/。因此,讓我們試着找出三角洲到哪裏去,還有一些其他的東西丟失了。請將生成的html放入jsfiddle,然後嘗試使用我用來測試它的相同的javascript。如果可行,請發佈整個視圖代碼,以便我們可以看一看。 – Milimetric 2012-08-06 18:12:13

+0

嗯,令人沮喪的是,我不能真的把代碼放入jsfiddle中,因爲它是使用MS MVC3框架生成的 - 所以它沒有真正執行有效的比較... – Rob 2012-08-07 09:18:10

1

如此看來,這是回答我的問題(我去打獵又在谷歌很難搜索對於那些沒有的東西涉及 「隱藏」 字段):

https://stackoverflow.com/a/7673985/491950

例如

$("#height-container input[type='text']").attr("disabled", "disabled"); 

感謝您的回答。

+0

那麼你如何輸入輸入? – stuartdotnet 2013-10-15 05:00:45

+0

僅在未向用戶顯示時才被禁用 - 請參閱我的答案上方的SO鏈接 – Rob 2013-10-16 01:59:42

相關問題