MVC3发布不打扰的客户端验证,但在提交提交挂钩之前可用吗?

| 我想使用
jquery.validate
(1.8.1)库和ASP MVC3 RTM
jquery.validate.ubobtrusive
库,是否想知道是否有一个钩子可以用来在验证之后但在提交实际表单之前注入一些其他逻辑。 换句话说:正在提交表单,运行验证(执行其通常的操作),验证没有理由停止提交表单,在此处运行我的代码,然后按常规提交。 我知道我可以处理表单的
submit
事件并执行以下操作:
$(\'#MyForm\').submit(function() {
    if (!$(this).valid())
       return false;

    // My Code Here
}
...自己打电话给验证,如果成功,请输入我自己的逻辑。但是我觉得这很脏。我怎么知道这是jquery.validate \的Submit处理程序中唯一的代码?即使这是唯一运行的代码,我真的要复制它吗?我宁愿不必镜像验证库在提交时所做的工作;我只想在验证完成后但在表单提交之前注入自己-就像绑定到神话般的
$(\'#MyForm\').lastPossibleMomentBeforeSubmit(function() { // My Code Here });
事件。 关于此“我的代码在哪里”的指针应该在哪里?     
已邀请:
        如果您只是使用jquery.validate,则可以使用成功调用,如下所示:
$(function () {
    $(\'#MyForm\').validate({
       success : function(error) {
           // additional logic
       }
    });
});
但是,由于您正在使用jquery.validate.ubobtrusive,因此遗憾的是,这无法直接完成,因为jquery.validate.ubobtrusive在内部隐藏了对.validate的调用。 相反,您需要获取jquery.validate.ubobtrutru传递给.validate的settings / options对象,捕获其现有的成功处理程序,并将其替换为自己的调用原始处理程序并具有以下附加功能:
$(function () {
            var settings = $(\'form\').data(\'validator\').settings,
                originalSuccess = settings.success;
            settings.success = function (error) {
                originalSuccess(error);
                // additional logic
            };
        });
    
        我相信你可以做这样的事情。
$(document).ready(function() {
    $(\"#MyFormform\").validator().bind(\"onSuccess\", function(e, els) {
         //Code to run after validation succeeds
    }
});
    

要回复问题请先登录注册