This is a fairly standard practice. You make a layout where all the fields are mimicked as global fields. The save button then runs a script that takes the values in the global fields and enters/edits them in the correct fields in the original layout, commits the changes and clears the globals. Another option is to employ an audit table where you can track changes and roll them back if need be. I think there are a few 3rd parties plug ins that do this.