The below method doesn't take a snapshot (as stated by others it's not possible) but this is a 'way' to capture the state of the form at the time the user clicks the snapshot button. This is not production code, this is just a possible way of tackling it. Again I stress that this isn't a real snapshot, but will achieve a similer purpose.
You could get jQuery to send the completed HTML form and fields via POST to a PHP script that interprets the HTML and renders/saves it.
// Some javascript file
$('#save_button').click(function(e) {
$.ajax({
type: "POST",
url: "save_form.php",
data: "data=" + $('#form_id').html(),
success: function(msg){
alert("saved: " + msg );
}
});
});
And then in the PHP file save_form.php (You would want to id the snapshots somehow, either autoincrement a value, or send an id (timestamp, ip, etc) from the ajax request
<?php
// connect to db
// bla bla bla - you would obviously clean the POST data before insertion
$result = mysql_query("INSERT INTO snapshots (html_source) VALUES ({$_POST['data']})");
// test result etc
// no you have the html stored, which you can view below
?>
And finally have a renderer, say snapshot_render.php
<?php
// you would make a request based on an id
$result = mysql_query("SELECT html_source FROM snapshots LIMIT 1");
$row = mysql_fetch_array($result);
echo $row['html_source'];
?>