For databases, that autosave works really well and protects users from a lot of potential errors.
But there are two basic approaches for managing edits and new record creation such that the data is not saved until the user clicks a save button.
In Layout setup, theres a check box, Save record changes automatically, that can be cleared. Then the user is asked if they want to save the data whenever a commit records event occurs. A button on the layout can use Commit Records to save the data. But clicking a blank area of your layout also commits data and will trigger that dialog asking them if they want to save the data. Preventing this mouse click from doing that is a bit of a pain. You can place an invisible empty web view object on your layout, positioned and sized to cover the entire body layout part and placed behind all of your fields where users may need to enter/edit data. That object will intercept the mouse clicks and keep them from committing the record.
Set up layouts for data entry where all the fields are global fields. To edit an existing record, you design the system so that a user must click an "edit" button to select a record and open it for editing. This script then goes to the layout with the global fields and copies the data from the selected record into corresponding global fields. A new record script would simply bring up this layout and clear the fields. A "Save" script then copies the data back to fields in the actual table to save that data. The script will need to be able to determine whether to create a new record for this data or update an existing record. You can set a value in a global field or variable when the user clicks either New or Edit that the save script can check to determine whether or not to do that. If you want to warn users that data in the global fields has not been saved, you'll need to create scripts for that purpose as well.
I used the first approach. Thank you!