将表单及其元素值存储在变量中

时间:2014-12-16 14:09:42

标签: javascript jquery forms

我有一个单页网页应用。

为了提高速度,我会存储每个页面'在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);
}

其他一切似乎都有效,我可以按照自己的意愿存储和检索页面,只是表单元素的任何值都会丢失。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

你不能那样存储它。而是将其存储为序列化数组。您可以在需要时将其填回。 serializeArray返回包含namevalue

的对象数组
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
}