2

使用jquery.validate1.8.1)库和 ASP MVC3 RTMjquery.validate.ubobtrusive库,我想知道是否有一个可用的钩子可以在验证后但在提交实际表单之前注入一些额外的逻辑。

换句话说:表单正在提交,验证运行(做任何正常的事情),验证没有理由阻止表单提交,在此处运行我的代码,然后正常提交。

我知道我可以处理表单的submit事件并执行以下操作:

$('#MyForm').submit(function() {
    if (!$(this).valid())
       return false;

    // My Code Here
}

...自己调用验证,然后,如果成功,请输入我自己的逻辑。但我觉得这很脏。我怎么知道这是 jquery.validate 的提交处理程序中唯一的代码?即使这是唯一运行的代码,我真的要复制它吗?我宁愿不必反映验证库在提交时所做的事情;我只想在验证发生后,但在表单提交之前注入自己——比如绑定到一个神话$('#MyForm').lastPossibleMomentBeforeSubmit(function() { // My Code Here }); 事件。

关于这个“我的代码”应该去哪里的任何指示?

4

2 回答 2

1

如果您只是使用 jquery.validate ,则可以像这样使用成功回调:

$(function () {
    $('#MyForm').validate({
       success : function(error) {
           // additional logic
       }
    });
});

但是,因为您正在使用 jquery.validate.ubobtrusive 遗憾的是,这不能直接完成,因为 jquery.validate.ubobtrusive 在内部隐藏了对 .validate 的调用。

相反,您需要获取 jquery.validate.ubobtrusive 传递给 .validate 的设置/选项对象,捕获它的现有成功处理程序,并用您自己的调用原始成功处理程序替换它,并拥有像这样的附加功能:

$(function () {
            var settings = $('form').data('validator').settings,
                originalSuccess = settings.success;
            settings.success = function (error) {
                originalSuccess(error);
                // additional logic
            };
        });
于 2013-02-22T15:26:23.123 回答
-1

我相信你可以做这样的事情。

$(document).ready(function() {
    $("#MyFormform").validator().bind("onSuccess", function(e, els) {
         //Code to run after validation succeeds
    }
});
于 2011-06-13T04:19:35.607 回答