way.js

way.js is a simple, lightweight, persistent, framework-agnostic javascript library that allows you to bind DOM elements to an in-memory datastore (with no to little JS code).
If you like buzzwords, that means super easy two-way databinding.
Once you tried it here, check the documentation or play with some code on Codepen / jsFiddle.

Example

This form is bound to the "formData" property and automatically parsed on each change.
Data is set to persistent. Try refreshing the page after changing some of its values.
Bonus: open the JS console to see watchers in action.
Level
Name (uppercased):
Remove
The only code required to achieve that (wording excluded) is the following:

<form way-data="formData" way-persistent>
<input type="text" name="name">
<input type="text" name="picture">
<img way-data="formData.picture" way-default="[some url]">
<input type="checkbox" name="nationality[]" value="french"> [...]
<a way-action-push="formData.skills">Add a skill</a>
<div way-repeat="formData.skills">
<input type="text" way-data="title" way-persistent>
<input type="radio" value="noob" way-data="level" way-persistent> [...]
</div>
</form>
This is the data stored in way.js
Clear data