diff --git a/frappe/public/js/frappe/form/controls/data.js b/frappe/public/js/frappe/form/controls/data.js index 69f2b5d519..c9ec9c5c6c 100644 --- a/frappe/public/js/frappe/form/controls/data.js +++ b/frappe/public/js/frappe/form/controls/data.js @@ -185,6 +185,12 @@ frappe.ui.form.ControlData = class ControlData extends frappe.ui.form.ControlInp // debounce to avoid repeated validations on value change this.$input.on("input", frappe.utils.debounce(change_handler, 500)); } + + if (this.constructor?.trigger_dirty_on_input_event) { + this.$input.on("input", () => { + this.frm?.dirty(); + }); + } } setup_autoname_check() { if (!this.df.parent) return; diff --git a/frappe/public/js/frappe/form/controls/int.js b/frappe/public/js/frappe/form/controls/int.js index d612db40ae..f32fc976dc 100644 --- a/frappe/public/js/frappe/form/controls/int.js +++ b/frappe/public/js/frappe/form/controls/int.js @@ -1,5 +1,6 @@ frappe.ui.form.ControlInt = class ControlInt extends frappe.ui.form.ControlData { static trigger_change_on_input_event = false; + static trigger_dirty_on_input_event = true; // mark dirty without reformatting static input_mode = "numeric"; make() { super.make();