From a3103cf5689e5003db709e59b41fe1ea489d561a Mon Sep 17 00:00:00 2001 From: Roche Christopher Date: Mon, 15 Jul 2024 22:11:20 -0400 Subject: [PATCH] Added onInput event for fields in forms - fix for issue #7600 (#7660) An onInput event is added for fields in forms that gets triggered everytime an input is detected in the field --- .../templates/js/translated/forms.js | 20 ++++++++++++++++++- .../templates/js/translated/purchase_order.js | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/backend/InvenTree/templates/js/translated/forms.js b/src/backend/InvenTree/templates/js/translated/forms.js index 7b49cb5238..7d273dd9ec 100644 --- a/src/backend/InvenTree/templates/js/translated/forms.js +++ b/src/backend/InvenTree/templates/js/translated/forms.js @@ -298,7 +298,8 @@ function constructDeleteForm(fields, options) { * - closeText: Text for the "close" button * - fields: list of fields to display, with the following options * - filters: API query filters - * - onEdit: callback or array of callbacks which get fired when field is edited + * - onEdit: callback or array of callbacks which get fired when field is edited - does not get triggered until the field loses focus, ref: https://api.jquery.com/change/ + * - onInput: callback or array of callbacks which get fired when an input is detected in the field * - secondary: Define a secondary modal form for this field * - label: Specify custom label * - help_text: Specify custom help_text @@ -1646,6 +1647,23 @@ function addFieldCallback(name, field, options) { }); } + if(field.onInput){ + + el.on('input', function(){ + var value = getFormFieldValue(name, field, options); + let onInputHandlers = field.onInput; + + if (!Array.isArray(onInputHandlers)) { + onInputHandlers = [onInputHandlers]; + } + + for (const onInput of onInputHandlers) { + onInput(value, name, field, options); + } + }); + + } + // attach field callback for nested fields if(field.type === "nested object") { for (const [c_name, c_field] of Object.entries(field.children)) { diff --git a/src/backend/InvenTree/templates/js/translated/purchase_order.js b/src/backend/InvenTree/templates/js/translated/purchase_order.js index eb0571f763..03c10cad39 100644 --- a/src/backend/InvenTree/templates/js/translated/purchase_order.js +++ b/src/backend/InvenTree/templates/js/translated/purchase_order.js @@ -343,7 +343,7 @@ function poLineItemFields(options={}) { reference: {}, purchase_price: { icon: 'fa-dollar-sign', - onEdit: function(value, name, field, opts) { + onInput: function(value, name, field, opts) { updateFieldValue('auto_pricing', value === '', {}, opts); } },