使用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的提交处理程序中唯一的代码?即使这是唯一运行的代码,我真的想复制它吗?我宁愿不必反映验证库提交的内容;我想在验证发生后注入自己,但是在表单提交之前 - 就像绑定到神秘的$('#MyForm').lastPossibleMomentBeforeSubmit(function() { // My Code Here });
一样
事件
关于“我的代码在这里”应该去哪里的任何指示?
答案 0 :(得分: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
};
});
答案 1 :(得分:-1)
我相信你可以做这样的事情。
$(document).ready(function() {
$("#MyFormform").validator().bind("onSuccess", function(e, els) {
//Code to run after validation succeeds
}
});