从FormData对象填充HTML表单

tuf*_*der 7 html javascript html5 ecmascript-6

是否可以存储表单的FormData对象,然后使用该FormData对象将存储的FormData值重新填充回表单?

例如: HTML

<form id="test_form">
  <input type="text" name="last_name" placeholder="Last Name"/><br/>
  <input type="text" name="first_name" placeholder="First Name"/><br/>
  <input type="date" name="date_of_birth" placeholder="Date of Birth"/><br/>
</form>
Run Code Online (Sandbox Code Playgroud)

使用Javascript

var f = document.getElementById('test_form');
var data = FormData(f);
...
// mythical function to translate FormData back into form values
f.values(data);
Run Code Online (Sandbox Code Playgroud)

Sph*_*xxx 9

使用thisthis,这是我如何序列化和反序列化表单数据:

function formSerialize(form) {
    const data = new FormData(form);
    ///sf/answers/3082339781/
    return new URLSearchParams(data).toString();
}

function formDeserialize(form, data) {
    const entries = (new URLSearchParams(data)).entries();
    for(const [key, val] of entries) {
        //http://javascript-coder.com/javascript-form/javascript-form-value.phtml
        const input = form.elements[key];
        switch(input.type) {
            case 'checkbox': input.checked = !!val; break;
            default:         input.value = val;     break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

警告:formDeserialize()不会清除未包含在存储数据中的字段,例如空的无线电组或复选框。此外,未对所有<input>类型进行测试。