我有一个ASP.NET MVC 4应用程序,它使用jQuery.validation.js插件和MVC的jQuery.validation.unobtrusive.js.我在视图模型上使用数据注释来验证文本框的输入是否为整数.
使用…在父视图中加载此(嵌套)视图
<% Html.RenderPartial("New"); %>
第一个初始页面加载,客户端验证工作.但是任何使用ajax调用重新加载嵌套视图,客户端验证都不再有效.这是为什么?
$.validator.unobtrusive.parse($('form'));
例:
var saveAndUpdate = function (url) { var myForm = $('form',$('#TheDivThatContainsTheNewHTML')); $.ajax({ url: url,type: 'POST',data: myForm.serialize(),success: function (result) { $('#TheDivThatContainsTheNewHTML').html(result); $.validator.unobtrusive.parse($('#TheDivThatContainsTheNewHTML')); },error: function (xhr,ajaxOptions,thrownError) { alert(xhr.status); alert(thrownError); },dataType: 'html' }); }
解决方法
但是任何使用ajax调用重新加载嵌套视图,客户端验证都不再有效.这是为什么?
验证适用于文档就绪,当您刷新页面时,您应该手动为表单初始化验证.
像这样:
$.validator.unobtrusive.parse("form");
同样的问题:jquery.validate.unobtrusive not working with dynamic injected elements