我已经阅读了我能找到的所有其他 jQuery 验证问题,但没有任何帮助。我正在尝试做一些应该如此简单但不引人注目的验证让我想在我的所有四个显示器上打一个洞(嫉妒?)
我有一个形式为 a 的字段select
,另一个是日期选择器。当Select占据一定值时,需要日期。对于所有其他选择值,日期是可选的。当页面第一次加载时,日期是可选的——也就是说,Required
模型元数据中没有属性。
这是我的脚本块以及我需要帮助的漏洞:
<script type="text/javascript">
function DateRequirement() {
if ($("#StatusID").val() == 602) {
$("#DateOfFirstCoverage").attr("data-val-required", "A date is required for current members.");
// some kind of re-validating here?
}
else if ($("#DateOfFirstCoverage").attr("data-val-required") !== undefined) {
$("#DateOfFirstCoverage").rules("remove", "required");
// some kind of re-validating here?
}
}
$("#StatusID").change(DateRequirement);
$(document).ready(DateRequirement);
</script>
仅供参考,我尝试了其他添加要求的方法,例如使用.rules("add", { required: true })
,但仍然存在问题。这是我的问题清单:
- 使用
.rules
添加必需的方法,我得到设置未定义的错误。很多 SO 答案都说你需要先重新验证表单,我试过了,除了虽然它消除了错误,但该字段仍然不是必需的。 - 我现在拥有代码的方式,如上所示,成功地使该字段成为必填字段,但前提是它是在文档准备期间设置的。如果我在加载后更改选择框,它将永远不会成为必需的。
最奇怪的问题,无论我尝试什么,任何暗示成功的东西都会破坏页面上的其余验证。我还有很多其他必填字段。如果我的
DateOfFirstCoverage
字段成功成为必填字段,并且我填写了它但删除了一个不同的必填字段,则该页面会愉快地提交而无需验证并抱怨其他字段。例如,如果我的片段的一部分看起来像这样,就会发生这种情况:if ($("#StatusID").val() == 602) { $("form").validate(); $("#DateOfFirstCoverage").rules("add", { required: true }); }
那么,到底发生了什么?在不弄乱我的其他规则的情况下,完成我想要的“正确”方法是什么?