我正在请求将一个ASP.net MVC视图放到一个活动框中,该视图包含已经标记了JQuery不显眼的验证器插件所使用的属性的表单字段。
客户端脚本不起作用,我的理论是因为验证框架仅在页面加载时被触发,这一点已经过了MVC视图加载到活动框中的时间。
那么我怎样才能让验证框架知道它有新的表单字段来修复?
干杯,伊恩。
答案 0 :(得分:17)
var $form = $("form");
$form.unbind();
$form.data("validator", null);
$.validator.unobtrusive.parse(document);
// Re add validation with changes
$form.validate($form.data("unobtrusiveValidation").options);
答案 1 :(得分:6)
您可以查看following blog post。这是another one。
答案 2 :(得分:1)
另一种选择,相当诡计,对我有用。只需在ajax调用返回的局部视图的开头添加以下行
this.ViewContext.FormContext = new FormContext();
答案 3 :(得分:1)
出于某种原因,我不得不将bjan和dfortun的答案结合起来......
所以我把它放在我看来:
@{
this.ViewContext.FormContext = new FormContext();
}
这在ajax调用结束后执行:
var form = $("#EnrollmentForm");
form.unbind();
form.data("validator", null);
$.validator.unobtrusive.parse(document);
form.validate(form.data("unobtrusiveValidation").options);
答案 4 :(得分:0)
我有类似的问题。我有一个表单正在使用Ajax请求重新显示具有不同表单字段的表单的一部分。我通过使用
在客户端手动执行来使用不显眼的验证@Html.TextBoxFor
我的文本框。由于某种原因,验证在尝试使用无效字段提交时有效(即,文本框以红色标出,并显示相应的错误消息,其中包含我放在
中的内容data_val_required
例如,属性。
但是,在我单击一个按钮使得Ajax请求修改具有不同字段的表单然后再次提交之后,只显示无效字段上的红色轮廓,但不会呈现错误消息。
bjan的伎俩对我有用,但我仍然无法看到导致这个问题的原因。执行客户端验证所需的所有HTML都在那里,我只能弄清楚为什么错误消息属性值不会显示。
我能想到的是,jQuery验证代码在提交后没有再次检查表单字段。