2014-01-27 94 views
0

我試圖想出一種方法來保持頁面刷新/重新加載時的表單狀態。到目前爲止,我已經找到dumbformstate插件。這工作很好。我唯一的問題是動態注入字段。他們不堅持刷新。任何人有任何建議,可以使用動態注入字段?保留頁面刷新時的表單狀態?

或者如果有人使用這個特殊的插件知道它是否應該與動態,字段,我只是插入然後錯誤的方式嗎?這就是我要做的事:

success: function(data) { 
    var html = $("<div><h3>"+catName+"</h3></div>"); 
    html.find("h3").data("category",catName); 
    subCatContainer.append(html); 
    subCatsFetched = subCatContainer.find("h3"); 

    $(data).each(function(){ 
     var input = $('<label>'+this.sub_cat_name+'<input type="checkbox" name="sub_cat[]" value="'+this.sub_cat_id+'" /></label>'); 
     html.append(input); 
    }); 
} 

或者是有可能,域不會持續,由於他們是一個div元素裏面?他們必須在div內部是有原因的,所以我沒有辦法真正做到這一點。

或者我試圖尋找的另一件事是一些通用的「DOM保存程序」,在那裏我可以只取一些任意的DOM,並通過刷新(cookies/localstorage)保存它。但在這種情況下,我猜測投入的價值最終不會被保留下來?

編輯:

這個問題並沒有真正的答案。正如我對這個插件做什麼的假設是錯誤的。它所做的只是將有關狀態的信息存儲在表單的所有元素中,而不會執行任何操作來保留動態生成的DOM元素。在使用一些localStorage來存儲生成的DOM之後,所有輸入的狀態將會像預期的那樣持續下去!

回答

1

如果您在自動填充字段後實例化插件,那麼該怎麼辦?在你的Javascript中有這樣的東西:

//Load field's content 
loadData(...); 

//Instantiate plugin 
$('your-form').dumbFormState(...) 

這是否行得通?

+0

我試圖在每次對錶單進行更改後,按照實例化的方式做一些事情。但仍然沒有拿起動態的領域。 – galdikas

+0

如果你看看插件,你會看到:[line 150] $ this.bind('blur.dumbFormState focus.dumbFormState click.dumbFormState keyup.dumbFormState change.dumbFormState',function(){...}所以你應該能夠做到我所說的,並且每次更改後都不需要調用實例化,只做一次,請發佈代碼以查看發生了什麼 –

+0

好的,我正在檢查此插件存儲的JSON。有關動態字段的信息確實會在頁面加載時保留下來,並且插件按預期工作。問題是,HTML沒有得到保留,並且從我所看到的插件不應該所以我會以某種方式自己製作它,我想,我將不得不使用一些本地存儲來存儲生成的DOM中的HTML,並且如果我實現了這個插件,它將處理填充表單元素。 – galdikas