【发布时间】:2011-10-06 11:30:39
【问题描述】:
这是用例:
我有这个带有一组字段的长表单,只有当用户在其中一个可见输入中做出特定选择时,它才会变得可见。阅读 Brad Wilson 关于该主题的帖子我认为 jQuery.validator.unobtrusive.parse('.extra-data') 其中 .extra-data 是隐藏 div 的类。运气不好,因为第一次解析完成时数据已经存在。
所以最后我想出了这个来删除规则:
$('.data-panel').find('input[type="text"], textarea, select').each(function (i, item) {
var currentRules = $(item).rules('remove'); // Saving removed rules to a sorta dictionary
if (!$.isEmptyObject(currentRules)) {
removedRules[$(item).attr("name")] = currentRules;
}
});
然后重新连接它们:
$('.data-panel').find('input[type="text"], textarea, select').each(function (i, item) {
if (!$.isEmptyObject(removedRules[$(item).attr('name')])) {
$(item).rules('add', removedRules[$(item).attr('name')]);
}
});
问题是,当我逐个删除并重新附加这些验证规则时,这感觉有点怪异。我的问题是:没有更直接的方法吗?性能也是一个问题,在其中一种巨大的表单中,您会感觉到点击和验证运行之间的延迟。
【问题讨论】:
标签: javascript jquery asp.net-mvc-3 validation