jQuery:在输入字段上使用Web存储/本地存储

时间:2013-11-06 16:31:24

标签: javascript jquery html5 local-storage web-storage

我正在尝试保存/检索表单中所有输入字段的值。不幸的是,这不起作用。
令人沮丧的部分是我不知道什么是错的。我已经测试了类型:键和值都是字符串。事件已正确附加,console.log被触发 您是否在此代码中看到任何令您惊讶的内容?为什么没有保存或检索值?

(function ($) {
    if (typeof (window.localStorage) != "undefined") {
        $.each($("#myform input[type=text]"), function () {
            localStorage.getItem($(this).attr("id"));
        });
        $("#myform input[type=text]").live("change", function () {
            localStorage.setItem($(this).attr("id"), $(this).val());
        });
    }
})(jQuery);

当然,我在支持网络存储的浏览器中进行测试,每个输入都有一个id。

2 个答案:

答案 0 :(得分:1)

从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。旧版jQuery的用户应该使用.delegate()而不是.live()。

(来自JQuery文档)

所以我的猜测是你有两个选择:

$("#myform input[type=text]").on("change", function () {
        localStorage.setItem($(this).attr("id"), $(this).val());
 });

$("#myform input[type=text]").delegate("change", function () {
        localStorage.setItem($(this).attr("id"), $(this).val());
 });

答案 1 :(得分:0)

  1. .live()已在1.9中删除,已弃用于1.7
  2. 我在第一个$(this).val(localStorage.getItem($(this).attr("id")))循环中没有看到任何值setter each来填充值。