Javascript 通过jquery处理已验证表单的表单发布事件(不引人注目的验证)
我必须处理表单的提交事件,并可能阻止发布。例:Javascript 通过jquery处理已验证表单的表单发布事件(不引人注目的验证),javascript,jquery,jquery-validate,unobtrusive-validation,Javascript,Jquery,Jquery Validate,Unobtrusive Validation,我必须处理表单的提交事件,并可能阻止发布。例: $('#myForm').submit(function (){ if (someCondition) return true //post; else return false //dont post }); 这部分工作正常,但现在我有了jquery.validate插件和jquery.validate.unobtrusive 我希望这部分代码在验证通过后运行(并且仅当表单有效时) 有什么想法吗 一些澄清 验证插件是来自
$('#myForm').submit(function (){
if (someCondition)
return true //post;
else
return false //dont post
});
这部分工作正常,但现在我有了jquery.validate插件和jquery.validate.unobtrusive
我希望这部分代码在验证通过后运行(并且仅当表单有效时)
有什么想法吗
一些澄清
验证插件是来自的jquery.validate插件
我在上面使用Microsofts(它与MVC3一起提供)插件。
我认为这项工作必须在jquery.validate.unobtrusive.js中的
validationInfo
函数中完成…我不确定是否正确理解了您的问题,但请查看jQueryValidate插件中的submitHandler
选项:
用于在表单有效时处理实际提交的回调。获取窗体作为唯一参数。替换默认提交
试试这个:
$("#myform").validate({
submitHandler: function(form) {
if (someCondition)
return true; //post
else
return false; //dont post
}
}
});
多亏了@Rory,我实现了我想要的。 由于jquery.validator.unobtrusive处理对jquery.validate的调用,并且不提供截取任何内容的方法(是的,这是一个Microsoft插件…),因此解决方案是使用Rory建议的
submitHandler
选项,但通过setDefault
方法:
if (typeof ($.validator) != 'undefined') {
$.validator.setDefaults({
submitHandler: function (form) {
if (someCondition)
return true; //post
else
return false; //dont post
}
});
}
如果我弄错了,不要开枪打我,但是你不需要在验证之前提交你的表格吗?编辑:尝试将您的函数相互堆叠?当用户单击“提交”时,验证插件将完成其工作,如果表单无效,则可能会阻止提交。基本上,a希望在表单有效时,在发布之前做一些业务。我认为这是一个好的开始,但是有jquery.validate.unobtrusive正在表单上调用
.validate
。我正在检查是否可以将提交处理程序交给不显眼的插件。啊,抱歉,我误读了你的OP,以为你在使用Basistance验证插件。是的,这是Basistance验证插件,上面有jquery.validate.unobstreat。这个不引人注目的插件是微软的MVC附带的。我会澄清我的问题。