使用本地存储HTML5保存表单
问题:如何使用HTML5的本地存储(localStorage)保存表单?
原因:localStorage无法直接处理数组,因此需要先对数组进行序列化或编码。
解决方法:通过jQuery插件`serializeObject()`将表单序列化为对象,并使用`JSON.stringify()`将对象转换为字符串进行存储。然后可以使用`JSON.parse()`将存储的字符串解析为对象。最后,可以通过`yourObject.fieldName`获取字段值。
代码示例:
var yourObject = $('#your-form').serializeObject(); localStorage['variablename'] = JSON.stringify(yourObject); localStorage.setItem('testObject', JSON.stringify(yourObject)); JSON.parse(localStorage['yourObject']); JSON.parse(localStorage.getItem('yourObject'));
补充:在上述示例中使用了`serializeObject`,这是一个jQuery插件。以下是使用的代码:
jQuery.fn.serializeObject = function () { var formData = {}; var formArray = this.serializeArray(); for(var i = 0, n = formArray.length; i < n; ++i) formData[formArray[i].name] = formArray[i].value; return formData; };
如何检查localStorage是否可用:可以通过以下链接查看更多信息:stackoverflow.com/questions/16427636/…
补充:如果需要恢复表单数据,当使用单选按钮组时,上述方法可能会失败。