使用 HTML 元素将输入值保存到 localstorage & "bind"

save input values to localstorage & "bind" it with HTML element

我画这幅画是为了展示我的最终目标。

简短描述:


我不是来这里从你们那里得到整个工作解决方案的,别担心。我已经研究了一个星期,但我无法全神贯注。如果不绑定到元素 & "grouping".

会很容易

问题:


This question 显示如何设置和获取值 to/from localStorage。

This question 显示如何从 localStorage 中删除值。

This question 显示如何检查 localStorage 值是否存在。

我们在随后的聊天过程中解决了问题 the first version of my answer that there is basically a bunch of HTML form elements that all have unique IDs

在此前提下,抓取它们并将它们作为 key/value 对存储到一个对象中相对容易。然后,此对象表示表单在该时间点所处的状态。

所以我们需要两个函数 - 一个将 HTML 表单中的值转换为一个对象,另一个做相反的事情(对它处理的表单元素的类型有一点点聪明)和)。这些函数可能如下所示:

function getFormState() {
    var formState = {};

    $(".form-control, :input:hidden").each(function () {
        formState[this.id] = $(this).val();
    });
    return formState;
}

function setFormState(formState) {
    $.each(formState, function (key, value) {
        var $target = $("#" + key);
        if ( $target.is(".ui-datepicker") ) {
            // set datepicker value...
        } else if ( $target.is(":text") ) {
            $target.val(value);
        } // etc for other field types
    });
}

$(function () {
    var savedState = {testinput: "Hello!"};

    setFormState(savedState);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="testinput">

保存 formState 对象需要将其序列化为 JSON 并将其放入 localStorage,这也不是太复杂。