I am working with software that uses an HTML form for a user interface to modify some configuration information. The back end is a database (strictly speaking).
The front-end has a hierarchy of values that can be changed in
When did the moment come to insert the changes initiated by the user into the database? There does not seem to be a good answer here:
when the content of each field changes – if I'm going to type the value
1.13e5in a field, then it will see intermediate values
1.13e5written. These intermediate values do not correspond to the intention of the user.
on the loss of concentration (usually, the user starts working on another part of the form) – this protects the database from intermediate values when typing, but a loss of focus may occur when switching to other applications. In addition, it seems odd to use a change of focus to cause a mutation in the database; Changing focus appears to be a read-only operation where the writing of values is not expected.
explicit push for each field (Editing a field opens a check box, and the value is not written until the box is not checked) – this makes explicit the change in values, but a little tedious
explicit push for the whole form (The user must click on an "OK" or "Send" button) – this makes it explicit, but if there are many values, the user may forget that he has made changes, and can accidentally close the window and lose changes.
Are there examples in the real world where someone has considered this type of option and made a well-reasoned decision? I want to learn from the work of someone else.
The Discourse administration interface uses the "explicit push for each field" approach, as well as a default reset element for the modified elements. This seems like a good idea to imitate, but I am not 100% sure.