使用jquery.validate (1.8.1)库和ASP MVC3 RTM jquery.validate.ubobtrusive库,我想知道是否有一个钩子可以在提交实际表单之前注入一些额外的逻辑来进行后验证。
换句话说:表单正在提交,验证运行(不管它通常做什么),验证发现没有理由停止表单提交,在这里运行我的代码,然后正常提交。
我知道我可以处理表单的submit事件,并执行如下操作:
$('#MyForm').submit(function() {
if (!$(this).valid())
return false;
// My Code Here
}..。我自己调用验证,如果成功的话,输入我自己的逻辑。但我觉得这很脏。我如何知道这是jquery.Value的提交处理程序中唯一的代码?即使这是唯一运行的代码,我真的想复制它吗?我宁愿不必反映验证库在提交时所做的事情;我只想在验证发生之后,但在表单提交之前注入自己--就像绑定到一个神秘的$('#MyForm').lastPossibleMomentBeforeSubmit(function() { // My Code Here });事件。
关于这个“我的代码”应该去哪里,有什么建议吗?
发布于 2013-02-22 15:26:23
如果您只是在使用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
};
});https://stackoverflow.com/questions/6326222
复制相似问题