5

我有一个表格,可以选择输入以下尺寸:

  • 宽度和高度
  • 宽度
  • 高度

我有两个容器 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>

如果选择了高度,那么表单上不会显示宽度,我如何禁用宽度输入字段上的不显眼验证,如果用户改变主意,我可以轻松地重新启用它,即删除数据-*属性不是一个选项。我很高兴创建一个 CustomAttribute 类来处理这个问题,但我不想破解标准的 jquery 文件来完成这项工作,因为它使更新到新版本令人头疼。如果所有其他方法都失败了,我将使用我通常的技巧,即在字段不可见时向字段添加值 0,然后在显示时将其删除。

编辑:

请注意,当 Width 不可见时,它本身并不是一个“隐藏”字段,它只是一个对用户不可见的输入标签,因为父 div 的样式为 display:none

4

2 回答 2

13

您可以设置 jQuery 验证器来处理您的不显眼的验证以忽略隐藏元素:

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

// the line above is outside any $(document).ready(...) or similar
$(document).ready(function(){
    ...
});
...
于 2012-08-05T12:43:20.160 回答
1

所以这似乎是我的问题的答案(我再次在谷歌上寻找与“隐藏”字段无关的东西):

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

例如

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

感谢您的回答。

于 2012-08-05T13:10:12.227 回答