jquery追溯历史记录后丢失浏览器

时间:2013-01-14 14:43:09

标签: jquery browser append

我有一个表单,当单击一个按钮时,会附加新的输入。 提交时一切正常,但如果我点击后面的浏览器,则所有附加的字段都会丢失..

点击此浏览器的按钮有没有办法维护它们?

谢谢!

1 个答案:

答案 0 :(得分:1)

您的附加元素仅存在于未由任何浏览器缓存的DOM中。

我建议您使用Cookie来解决此问题,请查看https://github.com/carhartl/jquery-cookie

向这样的cookie添加内容

$.cookie("row", "a new row or whatever");

// or preferably a json
var myJsonRow = {
   row: 1,
   value: "Test"
}
$.cookie("row", JSON.stringify(myJsonRow));

要阅读这个非常简单的cookie,只需使用

即可
$.cookie("row");

现在显然你需要比这更高级的东西,但这可以在json对象中处理。

首先创建一个你觉得舒服的json模式,类似这样的

// Basic row-pattern
var cookieRows = {
   rows: [
      {
         value: "row 1",
         type: "radio"
      },
      {
         value: "row 2",
         type: "text"
      },
      {
         value: "row 3",
         type: "password"
      },
   ]
}

并实施

$(document).ready(function(){
   // Test if the cookie is set
   if(!$.cookie("rows")) {

      var cookieRows = {
         rows: []
      }

      // Register the pattern
      $.cookie("rows", JSON.stringify(cookieRows));
   }

   // Adding rows

   // Register your event handler
   $("#control").click(function(){

      // Get the control element
      var controlElement = $(this);

      // Fetch the needed information and create a row
      var cookieRow = {
         value: controlElement.val(),
         type: controlElement.attr('type')
      }

      // Get the cookie
      var cookieRows = JSON.parse($.cookie("rows"));

      // Add the value to the cookie
      cookieRows.rows.push(cookieRow);

      // And save the cookie
      $.cookie("rows", JSON.stringify(cookieRows));
   });
});

好吧,你明白了!