Jquery自定义验证未触发

时间:2013-03-25 19:38:28

标签: jquery asp.net-mvc jquery-validate unobtrusive-validation

使用MVC Razor视图引擎;我有一个在属性上具有标准必需属性的模型和一个通过ajax回调呈现的局部视图。主视图包含表单,而部分只包含显示模板等,为了在客户端触发数据注释,我必须执行以下操作;

$('#MyButton').click(function () {
        $('#MyContainer').load("MY_ACTION_URL", function () {
            var form = $("#ReserveForm");
            form.removeData('validator');
            form.removeData('unobtrusiveValidation');
            $.validator.unobtrusive.parse(form);                
        });
});

以上工作很棒,它重新启动了我的客户端验证,并且它们完美无缺。问题是我有一些自定义的Jquery验证没有触发。例如;

$('#ReserveForm').validate({
        ignoreTitle: true,
        errorLabelContainer: '#errorContainer',
        errorClass: 'ClientSide-Validation-errors'
    });

    $.validator.addMethod('myCustomValidation',
        function (value, element, param) {
            return $(element).val() == '' && param == true;
        }, 'my message');

    $('#MYINPUT').rules("add",
        {
            myCustomValidation: true
        });

上面的自定义验证是在已准备好的部分文件中声明但没有运气。

PS,如果我在页面加载时渲染部分(例如在RenderAction中),则自定义验证可以正常运行。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

我相信这是重复的。 您不希望在局部视图中使用脚本。您应该提取脚本并在父视图中为部分声明它们。

MVC4 partial view javascript bundling Issue