Javascript 如何存储闭包函数返回的变量?

Javascript 如何存储闭包函数返回的变量?,javascript,jquery,Javascript,Jquery,注意到submitHandler的代码在多个地方被使用,并尝试对其进行重构 var validator = $("#form_id").validate({ errorClass: "ui-state-error", submitHandler: function(form) { jQuery(form).ajaxSubmit({ dataType: 'json',

注意到
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().batherrors(errors)的东西

有人对这个问题的解决方案有想法吗?
validate()
返回一个验证器

使用
.data()
将验证器附加到表单,检索它
bindSubmitHandler

您是否也希望传入
success
以及可能的
error
处理程序?

validate()
返回一个验证器

使用
.data()
将验证器附加到表单,检索它
bindSubmitHandler


您是否也希望传入
success
以及可能的
error
处理程序?

啊,这是一个很好的解决方案!是的,我会的。再加上这一点,现在不需要了。啊,很好的解决方案!是的,我会的。再加上这一点,在这一点上是不需要的。