我有一个单页网页应用。
为了提高速度,我会存储每个页面'在JS。
当页面上有表单时,我遇到了问题。如果填写表单,然后将其存储在js变量中,然后检索它,那么表单值是否已经消失?
我使用的函数如下:
var pages_html = {};
var $page = $('#some-page');
store_page($page);
$page.remove();
//some stuff on another page
var $retrieved_page = get_page('some-page');
console.log($retrieved_page.find('#some-input').val())
//consoles log is always blank / ''
function store_page(page){
var page_id = $(page).attr('id');
pages_html[page_id] = $(page);
}
function get_page(page_id){
var page = pages_html[page_id];
return $(page);
}
其他一切似乎都有效,我可以按照自己的意愿存储和检索页面,只是表单元素的任何值都会丢失。我该如何解决这个问题?
答案 0 :(得分:0)
你不能那样存储它。而是将其存储为序列化数组。您可以在需要时将其填回。 serializeArray
返回包含name
和value
var values = {};
function store_page(page){
var page_id = $(page).attr('id');
pages_html[page_id] = $(page);
values[page_id] = $(page).find("form").serializeArray(); // serialize it
}
function get_page(page_id){
var page = pages_html[page_id];
values[page_id].forEach(function(obj){
page.find('[name=' + obj.name + ']').val(obj.value) // add it again
});
return page; // and then return
}