【问题标题】:jQuery setting & getting localstorage data for dropdowns & input'sjQuery 设置和获取下拉列表和输入的本地存储数据
【发布时间】:2015-03-17 09:26:01
【问题描述】:

我正在尝试使一个简单的表单页面具有一些本地存储功能,以便在页面关闭/重新加载后恢复设置/输入。

我已经尝试开始,但我仍在学习,所以会出现错误,我无法让它发挥作用。

  • 如果更改名称 input 字段,它应该使用新名称更新本地存储。
  • 如果对任何下拉菜单(选择器?选项?)字段进行了更改,它应该使用新值更新本地存储。
  • 在页面加载时,它应该自动恢复所有值。
  • “清除”按钮应该将下拉(选择器?选项?)字段重置为空白,它应该重置名称字段。

示例:https://jsfiddle.net/5gam3b6f/

$(document).ready(function () {
    $.each($("select"), function (index, value)) {
        localStorage.getItem($(this).attr(“id”));
    };
});

$("select").on("change", function () {
    localStorage.setItem($(this).attr(“id”), $(this));
});

我还没有设法从名称输入字段或清除功能开始,因为我什至无法让第一个工作。

我宁愿不使用外部库,因为这很复杂,不需要其他任何东西。

【问题讨论】:

    标签: javascript jquery html jquery-ui


    【解决方案1】:

    以下内容适合您:

    Here is a working jsFiddle

    jQuery

    $('.useLocalSelect').change(function () {
        var key = $(this).attr('id');
        var value = $(this).val();
        localStorage.setItem(key, value)
    });
    
    // use a timer for text fields and the like so that localsotrage is set 2 seconds after the user stops typing instead of after each keystroke
    var t = '';
    $('.useLocalInput').keyup(function () {
        clearTimeout(t);
        var key = $(this).attr('id');
        var value = $(this).val();
        t = setTimeout(function () {
            localStorage.setItem(key, value)
        }, 2000);
    });
    
    $('.useLocal').each(function () {
        var key = $(this).attr('id');
        if (localStorage.getItem(key)) {
            $(this).val(localStorage.getItem(key));
        }
    });
    
    $('.clearLocalSelect').click(function () {
        $('.useLocalSelect').each(function () {
            $(this).val('');
            var key = $(this).attr('id');
            localStorage.removeItem(key);
        });
    });
    

    html

    <label style="color: #01ACEE; font: bold 14px Tahoma;">Input &nbsp;&nbsp;&nbsp;
        <input class="useLocal useLocalInput" id="testInput" size="40" type="text" name="website" value="" required/>
    </label>
    <br/>
    <br/>
    <label style="color: #01ACEE; font: bold 14px Tahoma;">Select</label>
    <select class="useLocal useLocalSelect" id="testSelect" name="start_date">
        <option value="">Select one...</option>
        <option value="January">January</option>
        <option value="February">February</option>
        <option value="March">March</option>
        <option value="April">April</option>
        <option value="May">May</option>
        <option value="June">June</option>
        <option value="July">July</option>
        <option value="August">August</option>
        <option value="September">September</option>
        <option value="October">October</option>
        <option value="November">Noember</option>
        <option value="December">December</option>
    </select>
    <br/>
    <br/>
        <input type="button" class="clearLocalSelect" value="Clear Selects"/>
    

    【讨论】:

    • 谢谢你,我绝对可以理解它以满足我的需要!我唯一不明白/得到的是 css .useLocal 的用途,因为我无法在任何地方显示任何红色......
    • 我的错,忽略这一点,我正在测试一些东西,忘记删除它:)
    • 唷,我一直在摸索着想弄清楚:P 谢谢你的帮助,从长远来看,这将对我有很大的帮助,因为我正在尝试掌握本地存储的窍门。跨度>
    • 让名称字段立即更新本地存储有什么负面影响?
    • 老实说,你可以让它立即工作。我认为没有一个打字员足够快会引起任何实际问题。恕我直言,在用户完成输入之前不要对文本字段进行操作只是一个好习惯。特别是如果您稍后开始执行其他操作,例如过滤表或执行操作会产生更多开销的操作。 :)
    猜你喜欢
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2016-03-26
    • 2016-01-12
    • 2017-10-02
    相关资源
    最近更新 更多