簡體   English   中英

如何存儲從閉包函數返回的變量?

[英]How to store the variable returned from a closure function?

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

有誰有解決這個問題的想法?

validate()返回一個驗證器。

使用.data()將驗證器附加到表單,將其檢索為bindSubmitHandler

但是,您是否也不想傳遞success以及可能的error處理程序?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM