注意到submitHandler
的代码在几个地方被使用,并试图重构它。
var validator = $("#form_id").validate({
errorClass: "ui-state-error",
submitHandler: function(form) {
jQuery(form).ajaxSubmit({
dataType: 'json',
success: function(entity) {
//dostuff
},
error: function(errors) {
validator.showErrors(errors);
}
});
}
});
我接受了上面的代码并将submithandler提取为类似的函数;
$("#generated_form_id").validate({
errorClass: "ui-state-error",
submitHandler: bindSubmitHandler(formId)
}
});
function bindSubmitHandler(formId){
return function(form) {
jQuery(form).ajaxSubmit({
dataType: 'json',
success: function(object) {
//do stuff
});
},
error: function(errors) {
validator.showErrors(errors); //throws an exception
}
});
}
}
此代码抛出异常,因为验证程序对象未定义。
我自己的推理可能是假的如下:我无法存储变量,因为表单是动态创建的。一个页面可以使用相同的bindSubmitHandler
函数创建其中十个表单。
我想过通过表单获取验证器的解决方案,但在验证器API中找不到任何这样的方法。如果有这样的方法,我可以写一些像$('#formid').getValidator().showErrors(errors);
是否有人有解决此问题的方法?
答案 0 :(得分:1)
validate()
会返回验证码。
使用.data()
将验证器附加到表单,检索bindSubmitHandler
。
你是否也想传递success
和error
处理程序?