jQuery.Validation.Unobtrusive客户端验证,只有当脚本视图页面上工作(jQ

2019-08-31 13:54发布

我有一个ASP.NET MVC应用程序4使用了jQuery.validation.js插件,MVC的jQuery.validation.unobtrusive.js。 我用数据说明我的视图模型来验证文本框的输入是一个整数。

此(嵌套的)视图是使用父视图中加载...

<% Html.RenderPartial("New"); %>

其中第一个inital页面加载,客户端验证工作。 但随着Ajax调用嵌套视图的任何重新加载,客户端验证不再起作用。 这是为什么?

更新 :(从下面webdeveloper的解决方案的代码示例)

$.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'
    });
}

Answer 1:

But any reloading of the nested view with an ajax call, client side validation no longer works. Why is that?

验证适用于document ready ,当您耳目一新页,你应该为你的表单手动初始化验证。

像这样:

$.validator.unobtrusive.parse("form");

同样的问题: jquery.validate.unobtrusive不工作动态元素注入



文章来源: jQuery.Validation.Unobtrusive client side validation only works when scripts are on view page