We have javascript on our form that runs in the onchange event of a field. It sets a second field's value based on the first field's value, then disables the 2nd field.
When the form is saved, we have found that the values of disabled fields are not committed regardless of their dirty state. To work around this issue in 2011, we enable the field during the form's Save event, then disable the field once again during the form's Load event.
In 2016, this no longer works because the form is not refreshed after the Save operation, and therefore the form Load event does not fire after Save.
One workaround is to use setSubmitMode() and always submit the field's value, but this can fire plugins and workflows unnecessarily when the field's value does not change.
Another workaround is to include the modified attribute on the form, set its visibility to false, and attach an onchange event to modifiedon where we can re-disable the field.
This works when the Save is successful, but not when the Save is cancelled because of a server error. In our case, we added a validation plugin that throws an error if certain conditions are not met. Unfortunately, we have not found a way to re-disable the field when the Save operation is cancelled due to the plugin since the built-in Save event does not have callback functions for onSuccess or onError.