2012-08-05 147 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

相关问题