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

时间:2011-11-24 15:55:38

标签: javascript jquery

注意到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);

的东西

是否有人有解决此问题的方法?

1 个答案:

答案 0 :(得分:1)

validate()会返回验证码。

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

你是否也想传递successerror处理程序?