From 4944dec9164d2777896729dc34f5e825d76fdb75 Mon Sep 17 00:00:00 2001 From: Kerolles Fathy Date: Tue, 14 Apr 2026 19:18:04 +0200 Subject: [PATCH] Merge pull request #38548 from KerollesFathy/fix-int-float-dirty-on-input fix(ui): mark form "Not Saved" on input for Int and Float fields --- frappe/public/js/frappe/form/controls/data.js | 6 ++++++ frappe/public/js/frappe/form/controls/int.js | 1 + 2 files changed, 7 insertions(+) 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();